Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

NetarchiveSuite specific unit testing guidelines (Note, legacy code might deviate from these guidelines):

  • We used JUnit4 https://github.com/junit-team/junit/wiki JUnit4 for running the unit tests.
  • We used Mockito to mock external dependencies. This requires the class to test to enable dependency injection. Legacy classes without this option might need to be refactored.
  • Avoid reading large files from disk with data irrelevant to the test. Instead construct test specific data in the test. See OrderXmlBuilder for example.
  • Unit tests are placed in the same module and package as the classes they test under the src/test/java dir (Maven standard).
  • Test method should be annotated with @test and test classes should be named ${class-to-test}Test to enable the test runner to find the tests

An example of a clean unit test with mocked external dependencies and focused test xml document generation can be found in the JobDispatcherTest class.

Unit tests are run as part of the general Maven lifecycle, eg. they can be run with: 

Code Block
mvn test

Integration tests

Integration tests are tests which investigate how several classes or external systems work together. This can be Dao class tests which run on top of a real database, MQ or heritrix tests.

Integration test are generally slower and less robust than pure unit tests

JUnit4 is also used for integration testing.

Integration tests are run as part of the general Maven test lifecycle. We are considering adding an profile to disable integration tests to allow running a fast sanity test buiæd with only unit tests.

System tests

Runs against a deploy system and validates the full system functionality. 

The system test is located in the integration test module.

See System test procedure for details on how to run the system tests.