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 succeeds() {
assertEquals(1000, display.getHeight());
}

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

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

@Test
void aborts() {
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 verifyTestEngineDiscovery() {
EngineDiscoveryResults results = EngineTestKit.engine("junit-jupiter")
.selectors(selectClass(DisplayTest.class))
.discover();

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

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

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

@Test
void verifyHighLevelTestStats() {
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 verifyTestAbortion() {
Events testEvents = EngineTestKit
.engine("junit-jupiter")
.selectors(selectMethod(DisplayTest.class, "aborts"))
.execute()
.testEvents();

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

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

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

}