+ ![]() |
+ + + | +
+ ![]() |
+
+
+
+
+
+
+
+
+ Overview+ +
Community+ +
Development+ +
Search+ +
+
+
+ |
+
+
+
+
+ Running and Writing Tests with OpenJPA+OpenJPA's unit tests are written using JUnit. For a template for a simple +test case, see the code for TestPersistence.java +. +If you want to contribute your own test case then follow the guidelines +. +Once you have downloaded and built OpenJPA (see Building +), you can run individual tests using the "test" goal to maven. For +example: +mvn test -DfailIfNoTests=false -Dtest=TestPersistence +
To get more debugging information (e.g., to see the SQL that is being +executed against the database), you can enable trace-level logging from the +command line using the "openjpa.Log" system property. For example: +$ mvn test -DfailIfNoTests=false -Dtest=TestPersistence -Dopenjpa.Log=DefaultLevel=TRACE + +[INFO] Scanning for projects... +[INFO] Reactor build order: +... +690 test TRACE [main] openjpa.jdbc.SQL - <t 4261185, conn 3061987> executing prepstmnt 12659709 + INSERT INTO AllFieldTypes (id, arrayOfStrings, booleanField, byteField, charField, dateField, + doubleField, floatField, intField, longField, shortField, stringField) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [params=(long) 601, (null) null, (int) 0, (byte) 0, + (int) 0, (null) null, (double) 0.0, (float) 0.0, (int) 0, (long) 0, (short) 0, (null) nu ll] +701 test TRACE [main] openjpa.jdbc.SQL - <t 4261185, conn 3061987> [11 ms] spent +701 test TRACE [main] openjpa.jdbc.JDBC - <t 4261185, conn 3061987> [0 ms] commit +702 test TRACE [main] openjpa.jdbc.JDBC - <t 4261185, conn 0> [0 ms] close +... +$ + Setting additional Log parameters+There are several parameters that are used by OpenJPA Log. Here are some +that might be of value when debugging test cases. Note that the logger +names are case sensitive while the log levels are not. +
Log levels specify the minimum log message that is output. All log messages +with a level higher than the log level set for a logger are output. So if +INFO is specified, log messages of level INFO, WARN, ERROR, and SEVERE are +output. +
For example, to avoid enhancement warnings, get detailed SQL information, +and write the log data to a file: +mvn test -Dtest=TestPersistence -Dopenjpa.Log=Enhance=ERROR,SQL=TRACE,file=openjpa.log + Testing against alternate databases+By default, OpenJPA uses the Derby
+database for testing. The mvn test -DfailIfNoTests=false -Dtest=TestPersistence -Ptest-hsqldb + For databases that are not in the pre-defined list, you can manually +specify connection parameters to use for testing under the "test-custom" +profile. You will need to manually provide the driver class and specify all +of the connection parameters. For example, to test against Oracle, you +might run: +mvn test -DfailIfNoTests=false -Dtest=TestPersistence -Ptest-custom \ + -Dopenjpa.custom.driverjar=$(pwd)/drivers/jdbc-oracle-10_2_0_1_0.jar \ + -Dopenjpa.custom.driverclass=oracle.jdbc.driver.OracleDriver \ + -Dopenjpa.custom.url=jdbc:oracle:thin:@HOST:PORT:DBNAME \ + -Dopenjpa.custom.username=USERNAME \ + -Dopenjpa.custom.password=PASSWORD + If you frequently need to test against another database, you can
+permanently declare the database connection parameters in the
+ <settings> + <profiles> + <profile> + <id>test-oracle</id> + <properties> + <test-custom>true</test-custom> + <openjpa.custom.driverjar>${user.home}/.m2/privaterepos/jdbc-oracle-10_2_0_1_0.jar</openjpa.custom.driverjar> + <openjpa.custom.driverclass>oracle.jdbc.driver.OracleDriver</openjpa.custom.driverclass> + <openjpa.custom.url>jdbc:oracle:thin:@HOST:PORT:DBNAME</openjpa.custom.url> + <openjpa.custom.username>USERNAME</openjpa.custom.username> + <openjpa.custom.password>PASSWORD</openjpa.custom.password> + </properties> + </profile> + </profiles> +</settings> + This profile can then be executed by running: +mvn test -DfailIfNoTests=false -Dtest=TestPersistence -Ptest-custom,test-oracle + Running JUnits in Eclipse+You'll probably want to setup a Debug Configuration in Eclipse for running +the JUnit testcases. +
|
+