@Override public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) { super.executionFinished(testIdentifier, testExecutionResult); testExecutionResult.getThrowable().ifPresent(exceptions::add); } }
@RepeatedTest(10) void runTestsInParallel() { Launcher launcher = LauncherFactory.create(); SummaryGeneratingListener listener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(listener); LauncherDiscoveryRequest request = request()// .configurationParameter("junit.jupiter.execution.parallel.enabled", "true")// .configurationParameter("junit.jupiter.execution.parallel.config.dynamic.factor", "10")// .selectors(selectClass(TestCase.class))// .build(); launcher.execute(request); assertEquals(NUM_TESTS, listener.getSummary().getTestsSucceededCount(), "number of tests executed successfully"); }
() -> assertEquals(1, summary.getTestsFoundCount(), () -> name + ": tests found"), () -> assertEquals(0, summary.getTestsSkippedCount(), () -> name + ": tests skipped"), () -> assertEquals(0, summary.getTestsAbortedCount(), () -> name + ": tests aborted"), () -> assertEquals(expectedStartedCount, summary.getTestsStartedCount(), () -> name + ": tests started"), () -> assertEquals(expectedSucceededCount, summary.getTestsSucceededCount(), () -> name + ": tests succeeded"), () -> assertEquals(expectedFailedCount, summary.getTestsFailedCount(), () -> name + ": tests failed") );
@Test @DisplayName("⚙️ Check a test failure with an intermediate async result verifier") void checkFailureTestWithIntermediateAsyncVerifier() { LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request() .selectors(selectClass(FailureWithIntermediateAsyncVerifierTest.class)) .build(); Launcher launcher = LauncherFactory.create(); SummaryGeneratingListener listener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(listener); launcher.execute(request); TestExecutionSummary summary = listener.getSummary(); assertThat(summary.getTestsStartedCount()).isEqualTo(1); assertThat(summary.getTestsFailedCount()).isEqualTo(1); assertThat(summary.getFailures().get(0).getException()).isInstanceOf(AssertionError.class); }
SummaryGeneratingListener listener = new SummaryGeneratingListener(); launcher.execute(request, listener); TestExecutionSummary summary = listener.getSummary(); this.runCnt += summary.getTestsFoundCount(); this.failureCnt += summary.getTestsFailedCount(); this.ignoreCnt += summary.getTestsSkippedCount(); this.ignoreCnt += summary.getTestsSkippedCount(); if (summary.getTestsFailedCount() > 0) { System.out.println( String.format( "FAIL Tests run: %d, Failures: %d, Ignore: %d, Time elapsed: %s", summary.getTestsFoundCount(), summary.getTestsFailedCount(), summary.getTestsSkippedCount(), stopwatch.stop())); System.out.println("Failures:"); for (TestExecutionSummary.Failure failure : summary.getFailures()) { System.out.println(failure.getTestIdentifier().getDisplayName()); failure.getException().printStackTrace(); System.out.println(); String.format( "Tests run: %d, Failures: %d, Ignore: %d, Time elapsed: %s", summary.getTestsFoundCount(), summary.getTestsFailedCount(), summary.getTestsSkippedCount(), stopwatch.stop())); System.out.println("Success");
private SummaryGeneratingListener registerListeners(PrintWriter out, Launcher launcher) { // always register summary generating listener SummaryGeneratingListener summaryListener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(summaryListener); // optionally, register test plan execution details printing listener createDetailsPrintingListener(out).ifPresent(launcher::registerTestExecutionListeners); // optionally, register XML reports writing listener createXmlWritingListener(out).ifPresent(launcher::registerTestExecutionListeners); return summaryListener; }
private TestExecutionSummary executeTests(PrintWriter out) { Launcher launcher = launcherSupplier.get(); SummaryGeneratingListener summaryListener = registerListeners(out, launcher); LauncherDiscoveryRequest discoveryRequest = new DiscoveryRequestCreator().toDiscoveryRequest(options); launcher.execute(discoveryRequest); TestExecutionSummary summary = summaryListener.getSummary(); if (summary.getTotalFailureCount() > 0 || options.getDetails() != Details.NONE) { printSummary(summary, out); } return summary; }
public static int computeExitCode(TestExecutionSummary summary, CommandLineOptions options) { if (options.isFailIfNoTests() && summary.getTestsFoundCount() == 0) { return NO_TESTS_FOUND; } return summary.getTotalFailureCount() == 0 ? SUCCESS : TEST_FAILED; }
private void printSummary(TestExecutionSummary summary, PrintWriter out) { // Otherwise the failures have already been printed in detail if (EnumSet.of(Details.NONE, Details.SUMMARY, Details.TREE).contains(options.getDetails())) { summary.printFailuresTo(out); } summary.printTo(out); }
private String getClassName(TestIdentifier testIdentifier) { return LegacyReportingUtils.getClassName(this.reportData.getTestPlan(), testIdentifier); }
@Test @DisplayName("⚙️ Check a test failure") void checkFailureTest() { LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request() .selectors(selectClass(FailureTest.class)) .build(); Launcher launcher = LauncherFactory.create(); SummaryGeneratingListener listener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(listener); launcher.execute(request); TestExecutionSummary summary = listener.getSummary(); assertThat(summary.getTestsStartedCount()).isEqualTo(1); assertThat(summary.getTestsFailedCount()).isEqualTo(1); assertThat(summary.getFailures().get(0).getException()).isInstanceOf(AssertionError.class); }
@SuppressWarnings("unused") public static void main(String[] args) { // Discover and filter tests LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder .request() .selectors(selectPackage("io.github.bonigarcia"), selectClass(DummyTest.class)) .filters(includeClassNamePatterns(".*Test")).build(); Launcher launcher = LauncherFactory.create(); TestPlan plan = launcher.discover(request); // Executing tests TestExecutionListener listener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(listener); launcher.execute(request, listener); }
@Test @DisplayName("⚙️ Check a failure in the test method body rather than in a callback") void checkDirectFailure() { LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request() .selectors(selectClass(DirectFailureTest.class)) .build(); Launcher launcher = LauncherFactory.create(); SummaryGeneratingListener listener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(listener); launcher.execute(request); TestExecutionSummary summary = listener.getSummary(); assertThat(summary.getTestsStartedCount()).isEqualTo(1); assertThat(summary.getTestsFailedCount()).isEqualTo(1); assertThat(summary.getFailures().get(0).getException()).isInstanceOf(RuntimeException.class); }
@SuppressWarnings("unused") public static void main(String[] args) { // Discover and filter tests LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder .request() .selectors(selectPackage("io.github.bonigarcia"), selectClass(DummyTest.class)) .filters(includeClassNamePatterns(".*Test")).build(); Launcher launcher = LauncherFactory.create(); TestPlan plan = launcher.discover(request); // Executing tests TestExecutionListener listener = new SummaryGeneratingListener(); launcher.registerTestExecutionListeners(listener); launcher.execute(request, listener); }