-
Notifications
You must be signed in to change notification settings - Fork 979
Testing Tips
Paul Rogers edited this page Nov 25, 2016
·
26 revisions
Drill makes extensive use of JUnit for testing. Most of us know the basics of JUnit. Drill uses many advanced features that we mention here.
Good references:
- JUnit Wiki, especially the Usage and Idioms section.
- Hamcrest Tutorial
- Hamcrest Java on GitHub
Drill tests use the JUnit 4 series that uses annotations to identify tests. Basic rules:
- All tests are packaged into classes, all classes start or end with the word "Test". In Drill, most tests use the prefix format: "TestMumble".
- Test methods are indicted with
@Test
. - Disabled tests are indicated with
@Ignore("reason for ignoring")
- Tests use "classic" JUnit assertions such as
assertEquals(expected,actual,opt_msg)
. - Tests also use the newer "Hamcrest"
assertThat
formulation. The Hamcrest project provided a system based on assertions and matchers that are quite handy for cases that are cumbersome with the JUnit-Style assertions. - Few Drill tests verify exceptions directly. But, the cleanest way appears to still be the try/catch idiom.
- Drill tests have the potential to run for a long time, or hang, if thing go wrong. To prevent this, Drill tests use a timeout. The main Drill test base class,
DrillTest
sets a default timeout of 50 seconds:
@Rule public final TestRule TIMEOUT = TestTools.getTimeoutRule(50000);
- Individual tests (override?) this rule with the timeout parameter to the Test annotation
@Test(timeout=1000)
. This form an only decrease (but not increase) the timeout set by the timeout rule.