Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions testing-modules/junit-5-advanced-3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@
<version>${junit-platform-launcher.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-testkit</artifactId>
<version>${junit-platform-testkit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand All @@ -36,13 +42,22 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
</plugin>
</plugins>
</build>

<properties>
<junit-jupiter.version>5.13.4</junit-jupiter.version>
<junit-platform-launcher.version>1.13.4</junit-platform-launcher.version>
<junit-jupiter.version>6.0.0</junit-jupiter.version>
<junit-platform-launcher.version>6.0.0</junit-platform-launcher.version>
<maven-surefire-plugin.version>3.5.3</maven-surefire-plugin.version>
<junit-platform-testkit.version>6.0.0</junit-platform-testkit.version>
</properties>

</project>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package enginetestkit;

public class Display {

private final Platform platform;
private final int height;

public Display(Platform platform, int height) {
this.platform = platform;
this.height = height;
}

public Platform getPlatform() {
return platform;
}

public int getHeight() {
return height;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package enginetestkit;

public enum Platform {
DESKTOP,
MOBILE
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.baeldung.enginetestkit;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;

import org.junit.Ignore;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import enginetestkit.Display;
import enginetestkit.Platform;

@Ignore
public class DisplayTest {

private final Display display = new Display(Platform.DESKTOP, 1000);

@Test
void whenCorrect_thenSucceeds() {
assertEquals(1000, display.getHeight());
}

@Test
void whenIncorrect_thenFails() {
assertEquals(500, display.getHeight());
}

@Test
@Disabled("Flakey test needs investigating")
void whenDisabled_thenSkips() {
assertEquals(999, display.getHeight());
}

@Test
void whenAssumptionsFail_thenAborts() {
assumeTrue(display.getPlatform() == Platform.MOBILE, "test only runs for mobile");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.baeldung.enginetestkit;

import static java.util.Collections.emptyList;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectMethod;
import static org.junit.platform.testkit.engine.EventConditions.abortedWithReason;
import static org.junit.platform.testkit.engine.EventConditions.event;
import static org.junit.platform.testkit.engine.EventConditions.finishedWithFailure;
import static org.junit.platform.testkit.engine.EventConditions.skippedWithReason;
import static org.junit.platform.testkit.engine.EventConditions.test;
import static org.junit.platform.testkit.engine.TestExecutionResultConditions.instanceOf;
import static org.junit.platform.testkit.engine.TestExecutionResultConditions.message;

import org.junit.jupiter.api.Test;
import org.junit.platform.testkit.engine.EngineDiscoveryResults;
import org.junit.platform.testkit.engine.EngineTestKit;
import org.junit.platform.testkit.engine.Events;
import org.opentest4j.AssertionFailedError;
import org.opentest4j.TestAbortedException;

public class EngineTestKitDiscoveryUnitTest {

@Test
void givenJunitJupiterEngine_whenRunningTestSuite_thenTestsAreDiscovered() {
EngineDiscoveryResults results = EngineTestKit.engine("junit-jupiter")
.selectors(selectClass(DisplayTest.class))
.discover();

assertEquals("JUnit Jupiter", results.getEngineDescriptor().getDisplayName());
assertEquals(emptyList(), results.getDiscoveryIssues());
}

@Test
void givenJunitVintageEngine_whenRunningTestSuite_thenTestsAreDiscovered() {
EngineDiscoveryResults results = EngineTestKit.engine("junit-vintage")
.selectors(selectClass(DisplayTest.class))
.discover();

assertEquals("JUnit Vintage", results.getEngineDescriptor().getDisplayName());
}

@Test
void givenTestSuite_whenRunningAllTests_thenCollectHighLevelStats() {
EngineTestKit
.engine("junit-jupiter")
.selectors(selectClass(DisplayTest.class))
.execute()
.testEvents()
.assertStatistics(stats ->
stats.started(3).finished(3).succeeded(1).failed(1).skipped(1).aborted(1));
}

@Test
void givenTestSuite_whenRunningTestThatAborts_thenCollectDetailedStats() {
Events testEvents = EngineTestKit
.engine("junit-jupiter")
.selectors(selectMethod(DisplayTest.class, "whenAssumptionsFail_thenAborts"))
.execute()
.testEvents();

testEvents.assertThatEvents()
.haveExactly(1, event(test("whenAssumptionsFail_thenAborts"),
abortedWithReason(instanceOf(TestAbortedException.class),
message(message -> message.contains("test only runs for mobile")))));
}

@Test
void givenTestSuite_whenRunningTestThatFails_thenCollectDetailedStats() {
Events testEvents = EngineTestKit
.engine("junit-jupiter")
.selectors(selectMethod(DisplayTest.class, "whenIncorrect_thenFails"))
.execute()
.testEvents();

testEvents.assertThatEvents()
.haveExactly(1, event(test("whenIncorrect_thenFails"),
finishedWithFailure(instanceOf(AssertionFailedError.class))));
}

}