Utility for Ordered Test Execution
An application to provide support for executing tests in the specific order and generate the customized XML report.
<dependency>
<groupId>com.hackerrank.applications</groupId>
<artifactId>junit-ordered-test-runner</artifactId>
<version>1.0.2</version>
</dependency>
compile 'com.hackerrank.applications
1.0.2'
compile(group = "com.hackerrank.applications", name = "junit-ordered-test-runner", version = "1.0.2")
libraryDependencies += "com.hackerrank.applications" % "junit-ordered-test-runner" % "1.0.2"
<dependency org="com.hackerrank.applications" name="junit-ordered-test-runner" rev="1.0.2" ></dependency>
'com.hackerrank.applications
jar:1.0.2'
OrderedTestRunner
should be used to run the test. The order of each test can be set by the @Order
annotation. The test with lower order value is run first.TestWatcher
rule using @Rule
annotation.registerClass
method of TestWatcher
in the @BeforeClass
setup.createReport
method of TestWatcher
in the @AfterClass
setup.For example,
@RunWith(OrderedTestRunner.class)
public class SampleOrderedTest {
@Rule
public TestWatcher watchman = TestWatchman.watchman;
public SampleOrderedTest() {
}
@BeforeClass
public static void setUpClass() {
TestWatchman.watchman.registerClass(SampleOrderedTest.class);
}
@AfterClass
public static void tearDownClass() {
TestWatchman.watchman.createReport(SampleOrderedTest.class);
}
@Test
@Order(1)
public void firstTest() {
assertTrue(0 == 0);
}
@Test
@Order(2)
public void secondTest() {
assertEquals(1, 1);
}
@Test
@Ordered(3)
public void thirdTest() {
assertNotEquals(1, null);
}
}
Also,
Runner
is already being used to run the tests, then, an inner class can be used to run with OrderedTestRunner
. Tests can be triggered using the JUnitCore.runClasses
method. In this case, the test is always passing, so optional check can be performed using allTestSucceeded
.For example,
public class SampleOrderedTest {
public SampleOrderedTest() {
}
@BeforeClass
public static void setUpClass() {
TestWatchman.watchman.registerClass(SampleOrderedTest.class);
}
@AfterClass
public static void tearDownClass() {
TestWatchman.watchman.createReport(SampleOrderedTest.class);
}
@Test
public void startTest() {
JUnitCore.runClasses(TestHelper.class);
assertTrue(TestWatchman.watchman.allTestsSucceeded());
}
@RunWith(OrderedTestRunner.class)
public static class TestHelper {
@Rule
public TestWatcher watchman = TestWatchman.watchman;
@Test
@Order(1)
public void firstTest() {
assertTrue(0 == 0);
}
@Test
@Order(3)
public void thirdTest() {
assertNotEquals(1, null);
}
@Test
@Order(2)
public void secondTest() {
assertEquals(1, 1);
}
}
}
And,
You can refer the given test examples for better understanding of writing tests with OrderedTestRunner
.
TestWatcher
generates an XML report in the target/hackerrank-report
directory. The filename is TEST-{test-class-canonical-name}.xml
.mvn clean build
to build the project.mvn clean test
to run the tests.mvn clean test -Dtest=TestSuite
to run the suite.