diff --git a/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/main/java/datadog/trace/instrumentation/junit5/CompositeEngineListener.java b/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/main/java/datadog/trace/instrumentation/junit5/CompositeEngineListener.java index 8f17d8c31b0..934d89e072a 100644 --- a/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/main/java/datadog/trace/instrumentation/junit5/CompositeEngineListener.java +++ b/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/main/java/datadog/trace/instrumentation/junit5/CompositeEngineListener.java @@ -25,7 +25,7 @@ public void dynamicTestRegistered(TestDescriptor testDescriptor) { @Override public void reportingEntryPublished(TestDescriptor testDescriptor, ReportEntry entry) { // tracing listener is not interested in this event - delegate.dynamicTestRegistered(testDescriptor); + delegate.reportingEntryPublished(testDescriptor, entry); } @Override diff --git a/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/groovy/JUnit5Test.groovy b/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/groovy/JUnit5Test.groovy index eaa5f9767d9..5b540cd257b 100644 --- a/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/groovy/JUnit5Test.groovy +++ b/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/groovy/JUnit5Test.groovy @@ -39,12 +39,14 @@ import org.example.TestSucceedUnskippable import org.example.TestSucceedUnskippableSuite import org.example.TestSucceedVerySlow import org.example.TestSucceedWithCategories +import org.example.TestSucceedWithReportEntry import org.example.TestSuiteSetUpAssumption import org.example.TestTemplate import org.junit.jupiter.api.Assumptions import org.junit.jupiter.engine.JupiterTestEngine import org.junit.platform.engine.DiscoverySelector import org.junit.platform.engine.TestExecutionResult +import org.junit.platform.engine.reporting.ReportEntry import org.junit.platform.launcher.TestExecutionListener import org.junit.platform.launcher.core.LauncherConfig import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder @@ -260,6 +262,15 @@ class JUnit5Test extends CiVisibilityInstrumentationTest { "test-attempt-to-fix-disabled-succeeded" | true | [TestSucceed] | [new TestFQN("org.example.TestSucceed", "test_succeed")] | [] | [new TestFQN("org.example.TestSucceed", "test_succeed")] } + def "forwards report entries to the launcher listeners"() { + when: + def listener = runTests([TestSucceedWithReportEntry]) + + then: + listener.reportEntries*.keyValuePairs == [["key": "value"]] + listener.dynamicTests.isEmpty() + } + def "test capabilities tagging #testcaseName"() { setup: Assumptions.assumeTrue(!JUnitPlatformUtils.isJunitTestOrderingSupported(instrumentedLibraryVersion())) @@ -269,7 +280,7 @@ class JUnit5Test extends CiVisibilityInstrumentationTest { assertCapabilities(JUnitPlatformUtils.JUNIT_CAPABILITIES_BASE, 4) } - protected void runTests(List> tests, boolean expectSuccess = true) { + protected TestResultListener runTests(List> tests, boolean expectSuccess = true) { DiscoverySelector[] selectors = new DiscoverySelector[tests.size()] for (i in 0..> testsByStatus = new ConcurrentHashMap<>() + private final Collection reportEntries = new CopyOnWriteArrayList<>() + private final Collection dynamicTests = new CopyOnWriteArrayList<>() + + void reportingEntryPublished(org.junit.platform.launcher.TestIdentifier testIdentifier, ReportEntry entry) { + reportEntries.add(entry) + } + + void dynamicTestRegistered(org.junit.platform.launcher.TestIdentifier testIdentifier) { + dynamicTests.add(testIdentifier) + } void executionFinished(org.junit.platform.launcher.TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) { testsByStatus.computeIfAbsent(testExecutionResult.status, k -> new CopyOnWriteArrayList<>()).add(testIdentifier) diff --git a/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/java/org/example/TestSucceedWithReportEntry.java b/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/java/org/example/TestSucceedWithReportEntry.java new file mode 100644 index 00000000000..92738b2739d --- /dev/null +++ b/dd-java-agent/instrumentation/junit/junit-5/junit-5.3/src/test/java/org/example/TestSucceedWithReportEntry.java @@ -0,0 +1,12 @@ +package org.example; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestReporter; + +public class TestSucceedWithReportEntry { + + @Test + public void test_succeed_with_report_entry(TestReporter reporter) { + reporter.publishEntry("key", "value"); + } +}