Michael,
Please take a look at JDO-33, which discusses the need for a log file so
that the stack traces don't get lost when you kill the test run. I think
it would be good to have the stack traces interleaved with the test
result, rather than all at the end. We also should have a log file
produced by default, rather than having to redirect the test output to a
file. I would also like to see all the information for part of a test
run if I decide to kill it before completion. So this, in conjunction
with a log file, looks good, as long as we don't see all the stack
traces twice.
-- Michelle
Michael Watzek wrote:
Hi,
currently I'm running the TCK with the proposed implementation.
I realized that the TCK output does not show exception traces before
all tests have been executed. Instead, it only prints the execution
status of tests. After all tests have been executed, exception traces
are dumped. For this reason, you have to wait until all tests have
been executed (which takes quite a long time) before you can start to
analyse test failures.
If we catch exceptions in method runBare(), log them, and afterwards
throw them, then we could start analysing failures immediately after
test execution. Clearly, runBare() has a throws clause (Throwable).
Moreover, we can log failures and errors using different log levels.
The runBare() code would look like this:
public void runBare() throws Throwable {
try {
setUp();
runTest();
}
catch (AssertionFailedError e) {
logger.error("Exception during setUp or runtest: ", e);
throw e;
}
catch (Throwable t) {
logger.fatal("Exception during setUp or runtest: ", t);
throw t;
}
finally {
tearDown();
}
}
Does this make sence?
Regards,
Michael
Hi Michael,
On May 25, 2005, at 2:32 AM, Michael Watzek wrote:
Hi Craig,
2) Furthermore, we add 2 methods to class JDOTest which may be
used for registering persistence capable instances and persistence
capable classses. The default implementation of localTearDown()
cleans up all registered persistent data.
We need method names. I'm thinking that we add tear down instances
and classes. So, addTearDownInstance(Object) and
addTearDownClass(Class). Or just registerTearDown(Object) where the
parameter might be a persistent object, an oid, or a class.
What about this:
addTearDownObjectId(Object)
addTearDownInstance(Object)
addTearDownClass(Class)
Ok.
3) We change all tests in order to comply to 1) and 2).
This needs just a bit of extra thought. Some test cases assume that
there are some instances in the database and if there are none,
create some. It's not clear that there is any issue for these
cases, so we should not arbitrarily clean up.
In a first step, I suggest to adapt all life cycle tests. If there
are life cycle tests relying on the execution of other life cycle
tests, then I'll take care that those tests set up the database
properly. If there are non-life cycle tests, relying on the
execution of life cycle tests, then those tests will fail. In that
case, I'll adapt those tests also.
Ok.
Craig
What do you think?
Regards,
Michael
--
-------------------------------------------------------------------
Michael Watzek [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED] Buelowstr. 66
Tel.: ++49/30/235 520 36 10783 Berlin - Germany
Fax.: ++49/30/217 520 12 http://www.spree.de/
-------------------------------------------------------------------
Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
P.S. A good JDO? O, Gasp!