db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Korneliussen (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-919) improve pattern for setting up junit tests
Date Mon, 13 Mar 2006 10:22:35 GMT
    [ http://issues.apache.org/jira/browse/DERBY-919?page=comments#action_12370144 ] 

Andreas Korneliussen commented on DERBY-919:
--------------------------------------------

The main idea with this issue was to clean up the exisiting tests which inherit from DerbyJUnitTest,
so that they can be run as type .junit.
I have done some work in this area, however it is not completed in because of the additional
harness in compatibility suite.

In general, I think junit can be used to write real unit tests as well, not only JDBC-tests.

I.e I would like to write some tests that tests store functionality using Junit. In such cases,
I think I would not like to inherit from a class which provides me with utility functions
to get a JDBC connection. Therefore, one should be careful of what we call BaseDerbyJuniTest
and DerbyJUnitTest.

I would propose doing the following with BaseDerbyJunitTest
1. Rename it to BaseJDBCTest
2. Maybe provide a setUp() which sets up a connection in the database, using TestUtil.
, then call an abstract method called:
createDataModel()
populateDatamodel()

or  a more general abstract method like: doAdditionalSetup()

In teardown() call abstract methods like:
dropDataModel()
and close the connection.
(or a more general method like doAdditionalSetup)

I think BasicDerbyJunitTest should use TestUtil to get the connection. 

> improve pattern for setting up junit tests
> ------------------------------------------
>
>          Key: DERBY-919
>          URL: http://issues.apache.org/jira/browse/DERBY-919
>      Project: Derby
>         Type: Sub-task
>   Components: Test
>  Environment: All
>     Reporter: Andreas Korneliussen
>  Attachments: BasicDerbyJUnitTest.html, BasicDerbyJUnitTest.java, BasicDerbyJUnitTestTest.java
>
> The current junit tests cannot be run directly from the java.ui.textrunner by i.e using:
> java junit.textui.TestRunner org.apache.derbyTesting.functionTests.tests.junitTests.lang.BooleanTest
> .E
> Time: 0.008
> There was 1 error:
> 1) testBoolean(org.apache.derbyTesting.functionTests.tests.junitTests.lang.BooleanTest)java.lang.NullPointerException
>         at org.apache.derbyTesting.functionTests.util.DerbyJUnitTest.faultInDriver(DerbyJUnitTest.java:317)
>         at org.apache.derbyTesting.functionTests.util.DerbyJUnitTest.getConnection(DerbyJUnitTest.java:345)
>         at org.apache.derbyTesting.functionTests.util.DerbyJUnitTest.getConnection(DerbyJUnitTest.java:335)
>         at org.apache.derbyTesting.functionTests.tests.junitTests.lang.BooleanTest.testBoolean(BooleanTest.java:136)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> FAILURES!!!
> Tests run: 1,  Failures: 0,  Errors: 1
> The reason is that the tests needs to have some fixture being set up before the test
can run, and that this is currently supported by calling a bunch of static methods in the
correct order to initialize some static members of DerbyJUnitTest.
> The proposed alternative is that the added fixture is set up in the suite() method, which
is used by JUnit to get the Test object to be run.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message