Skip to content

Commit 931c853

Browse files
Merge pull request #18880 from sam-gardner/BAEL-9376-A-guide-to-engine-test-kit
BAEL-9376 A guide to engine test kit
2 parents 26839a5 + 6a86db7 commit 931c853

File tree

5 files changed

+164
-2
lines changed

5 files changed

+164
-2
lines changed

testing-modules/junit-5-advanced-3/pom.xml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@
2727
<version>${junit-platform-launcher.version}</version>
2828
<scope>test</scope>
2929
</dependency>
30+
<dependency>
31+
<groupId>org.junit.platform</groupId>
32+
<artifactId>junit-platform-testkit</artifactId>
33+
<version>${junit-platform-testkit.version}</version>
34+
<scope>test</scope>
35+
</dependency>
3036
</dependencies>
3137

3238
<build>
@@ -36,13 +42,22 @@
3642
<artifactId>maven-surefire-plugin</artifactId>
3743
<version>${maven-surefire-plugin.version}</version>
3844
</plugin>
45+
<plugin>
46+
<groupId>org.apache.maven.plugins</groupId>
47+
<artifactId>maven-compiler-plugin</artifactId>
48+
<configuration>
49+
<source>9</source>
50+
<target>9</target>
51+
</configuration>
52+
</plugin>
3953
</plugins>
4054
</build>
4155

4256
<properties>
43-
<junit-jupiter.version>5.13.4</junit-jupiter.version>
44-
<junit-platform-launcher.version>1.13.4</junit-platform-launcher.version>
57+
<junit-jupiter.version>6.0.0</junit-jupiter.version>
58+
<junit-platform-launcher.version>6.0.0</junit-platform-launcher.version>
4559
<maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version>
60+
<junit-platform-testkit.version>6.0.0</junit-platform-testkit.version>
4661
</properties>
4762

4863
</project>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package enginetestkit;
2+
3+
public class Display {
4+
5+
private final Platform platform;
6+
private final int height;
7+
8+
public Display(Platform platform, int height) {
9+
this.platform = platform;
10+
this.height = height;
11+
}
12+
13+
public Platform getPlatform() {
14+
return platform;
15+
}
16+
17+
public int getHeight() {
18+
return height;
19+
}
20+
21+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package enginetestkit;
2+
3+
public enum Platform {
4+
DESKTOP,
5+
MOBILE
6+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.baeldung.enginetestkit;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assumptions.assumeTrue;
5+
6+
import org.junit.Ignore;
7+
import org.junit.jupiter.api.Disabled;
8+
import org.junit.jupiter.api.Test;
9+
10+
import enginetestkit.Display;
11+
import enginetestkit.Platform;
12+
13+
@Ignore
14+
public class DisplayTest {
15+
16+
private final Display display = new Display(Platform.DESKTOP, 1000);
17+
18+
@Test
19+
void whenCorrect_thenSucceeds() {
20+
assertEquals(1000, display.getHeight());
21+
}
22+
23+
@Test
24+
void whenIncorrect_thenFails() {
25+
assertEquals(500, display.getHeight());
26+
}
27+
28+
@Test
29+
@Disabled("Flakey test needs investigating")
30+
void whenDisabled_thenSkips() {
31+
assertEquals(999, display.getHeight());
32+
}
33+
34+
@Test
35+
void whenAssumptionsFail_thenAborts() {
36+
assumeTrue(display.getPlatform() == Platform.MOBILE, "test only runs for mobile");
37+
}
38+
39+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package com.baeldung.enginetestkit;
2+
3+
import static java.util.Collections.emptyList;
4+
import static org.junit.jupiter.api.Assertions.assertEquals;
5+
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
6+
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectMethod;
7+
import static org.junit.platform.testkit.engine.EventConditions.abortedWithReason;
8+
import static org.junit.platform.testkit.engine.EventConditions.event;
9+
import static org.junit.platform.testkit.engine.EventConditions.finishedWithFailure;
10+
import static org.junit.platform.testkit.engine.EventConditions.skippedWithReason;
11+
import static org.junit.platform.testkit.engine.EventConditions.test;
12+
import static org.junit.platform.testkit.engine.TestExecutionResultConditions.instanceOf;
13+
import static org.junit.platform.testkit.engine.TestExecutionResultConditions.message;
14+
15+
import org.junit.jupiter.api.Test;
16+
import org.junit.platform.testkit.engine.EngineDiscoveryResults;
17+
import org.junit.platform.testkit.engine.EngineTestKit;
18+
import org.junit.platform.testkit.engine.Events;
19+
import org.opentest4j.AssertionFailedError;
20+
import org.opentest4j.TestAbortedException;
21+
22+
public class EngineTestKitDiscoveryUnitTest {
23+
24+
@Test
25+
void givenJunitJupiterEngine_whenRunningTestSuite_thenTestsAreDiscovered() {
26+
EngineDiscoveryResults results = EngineTestKit.engine("junit-jupiter")
27+
.selectors(selectClass(DisplayTest.class))
28+
.discover();
29+
30+
assertEquals("JUnit Jupiter", results.getEngineDescriptor().getDisplayName());
31+
assertEquals(emptyList(), results.getDiscoveryIssues());
32+
}
33+
34+
@Test
35+
void givenJunitVintageEngine_whenRunningTestSuite_thenTestsAreDiscovered() {
36+
EngineDiscoveryResults results = EngineTestKit.engine("junit-vintage")
37+
.selectors(selectClass(DisplayTest.class))
38+
.discover();
39+
40+
assertEquals("JUnit Vintage", results.getEngineDescriptor().getDisplayName());
41+
}
42+
43+
@Test
44+
void givenTestSuite_whenRunningAllTests_thenCollectHighLevelStats() {
45+
EngineTestKit
46+
.engine("junit-jupiter")
47+
.selectors(selectClass(DisplayTest.class))
48+
.execute()
49+
.testEvents()
50+
.assertStatistics(stats ->
51+
stats.started(3).finished(3).succeeded(1).failed(1).skipped(1).aborted(1));
52+
}
53+
54+
@Test
55+
void givenTestSuite_whenRunningTestThatAborts_thenCollectDetailedStats() {
56+
Events testEvents = EngineTestKit
57+
.engine("junit-jupiter")
58+
.selectors(selectMethod(DisplayTest.class, "whenAssumptionsFail_thenAborts"))
59+
.execute()
60+
.testEvents();
61+
62+
testEvents.assertThatEvents()
63+
.haveExactly(1, event(test("whenAssumptionsFail_thenAborts"),
64+
abortedWithReason(instanceOf(TestAbortedException.class),
65+
message(message -> message.contains("test only runs for mobile")))));
66+
}
67+
68+
@Test
69+
void givenTestSuite_whenRunningTestThatFails_thenCollectDetailedStats() {
70+
Events testEvents = EngineTestKit
71+
.engine("junit-jupiter")
72+
.selectors(selectMethod(DisplayTest.class, "whenIncorrect_thenFails"))
73+
.execute()
74+
.testEvents();
75+
76+
testEvents.assertThatEvents()
77+
.haveExactly(1, event(test("whenIncorrect_thenFails"),
78+
finishedWithFailure(instanceOf(AssertionFailedError.class))));
79+
}
80+
81+
}

0 commit comments

Comments
 (0)