-
Notifications
You must be signed in to change notification settings - Fork 25
Unit Testing
Unit Testing is primarily done using JUnit tests. This article describes different ways to run the PC2v9 JUnit tests
The Ant target named test can be used to run all JUnit tests. This is the unit testing that the CI-CD build-deploy process uses to unit test.
Directions for running JUnit test via build.xml in Eclipse:
- Select the build.xml file.
- Right click to bring up context menu.
- Select
Run As...
. - Select
2. Ant Build...
- Check
test
, uncheck other targets/names. - Click
Run
.
All tests should pass, especially before pushing any changes.
There may be warnings similar to the following:
[junit] IOexception in setFileHandlers Couldn't get lock for profiles\Pa2427e06-a349-4f12-9ea2-ed1c579301bc\pc2.startup-%u.log
Such warnings can be ignored.
When running JUnit tests under Eclipse, sometimes a large number of tests (20 or more) fail or there is a message like this:
junit.framework.AssertionFailedError: ERROR - pc2 jar path not a directory '/software/pc2/cc/projects/pc2v9/build/prod\'
This situation usually means that there is no pc2.jar
file available for running JUnit tests.
To create the pc2.jar
for unit testing, do the following:
- Select the
createVERSIONandJar.xml
file. - Right click.
- Select
Run As...
- Select
1. Ant Build
This will run the createVERSIONandJar.xml
file, which will create the missing pc2.jar
file.
The following directions will behave like the build.xml test and may take more than 6 minutes to complete.
- Select the
test
folder. - Right click.
- Select
Run As
. - Select
1. Ant build
.
This will run all (approximately 800+) JUnit tests. All tests should pass.
There is an option to run all the unit tests faster. The stress tests and longer running unit tests will not be run. Using this option may take a minute or less (but of course it skips numerous tests).
Use the same instructions as in Executing the JUnit Tests (above) except first edit the Run Configuration and add an environment variable named pc2fasttest and set its value to any.
This will speed up the JUnit testing because each JUnit has a conditional check such that if the pc2fasttest environment variable exists then that test will be skipped.
Note that while this is very useful during development, the FULL JUnit test suite (with the pc2fasttest variable removed/undefined) should always be run prior to pushing major updates.
The AbstractTestCase has a number of useful methods incuding:
public void assertFileExists(String filename, String message)
public void assertDirectoryExists(String directoryName, String message)
public void assertNotEquals(String message, String expected, String actual)
public void assertEquals(String message, Filter expected, Filter actual)
public void assertFirstValueFound(String xml, String tagName, String expectedValue)
Contains methods to create model and add/modify model and utility methods
// Create "Standard" contest (pre-populated)
public IInternalContest createStandardContest() {
// Adding a run to the contest based on the runInfoLine, see example in EventFeedJSONTest see UnitTestData constructor
public static void addRunFromInfo(IInternalContest contest, String runInfoLine, boolean computerJudged)
Load the model from a CDP
// ex. to load from CDP at dirname
File cdpConfigDirectory = new File(dirname);
IInternalContest contest = new InternalContest();
loader.initializeContest(contest, cdpConfigDirectory);
Load the model from a samps contest
// Example in ContestTest class
Use
private IInternalContest loadSampleContest(IInternalContest contest, String sampleName) throws Exception {
Ex.
IInternalContest internal = loadSampleContest(null, "valtest");