Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import org.junit.jupiter.api.Test;
import org.junit.platform.commons.util.ReflectionUtils;
import org.junit.platform.engine.TestDescriptor;
import org.junit.platform.engine.TestExecutionResult;
import org.junit.platform.engine.UniqueId;
import org.junit.platform.engine.reporting.FileEntry;
import org.junit.platform.engine.reporting.ReportEntry;
import org.junit.platform.engine.support.descriptor.DemoMethodTestDescriptor;
import org.junit.platform.launcher.TestExecutionListener;
Expand All @@ -30,7 +32,6 @@
/**
* @since 1.0
*/
// TODO Test other adapter methods.
class ExecutionListenerAdapterTests {

@Test
Expand All @@ -54,6 +55,102 @@ void testReportingEntryPublished() {
assertThat(testExecutionListener.testIdentifier).isEqualTo(testIdentifier);
}

@Test
void testDynamicTestRegistered() {
var testDescriptor = getSampleMethodTestDescriptor();

var discoveryResult = new LauncherDiscoveryResult(
Map.of(mock(), EngineResultInfo.completed(testDescriptor, DiscoveryIssueNotifier.NO_ISSUES)), mock(),
dummyOutputDirectoryCreator());
var testPlan = InternalTestPlan.from(discoveryResult);

var testExecutionListener = new MockTestExecutionListener();
var executionListenerAdapter = new ExecutionListenerAdapter(testPlan, testExecutionListener);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The lines above are identical in all other test methods. Please extract these to a single method.


executionListenerAdapter.dynamicTestRegistered(testDescriptor);

var testIdentifier = testPlan.getTestIdentifier(testDescriptor.getUniqueId());
assertThat(testExecutionListener.dynamicallyRegisteredIdentifier).isEqualTo(testIdentifier);
}

@Test
void testExecutionStarted() {
var testDescriptor = getSampleMethodTestDescriptor();

var discoveryResult = new LauncherDiscoveryResult(
Map.of(mock(), EngineResultInfo.completed(testDescriptor, DiscoveryIssueNotifier.NO_ISSUES)), mock(),
dummyOutputDirectoryCreator());
var testPlan = InternalTestPlan.from(discoveryResult);
var testIdentifier = testPlan.getTestIdentifier(testDescriptor.getUniqueId());

var testExecutionListener = new MockTestExecutionListener();
var executionListenerAdapter = new ExecutionListenerAdapter(testPlan, testExecutionListener);

executionListenerAdapter.executionStarted(testDescriptor);

assertThat(testExecutionListener.startedIdentifier).isEqualTo(testIdentifier);
}

@Test
void testExecutionSkipped() {
var testDescriptor = getSampleMethodTestDescriptor();

var discoveryResult = new LauncherDiscoveryResult(
Map.of(mock(), EngineResultInfo.completed(testDescriptor, DiscoveryIssueNotifier.NO_ISSUES)), mock(),
dummyOutputDirectoryCreator());
var testPlan = InternalTestPlan.from(discoveryResult);
var testIdentifier = testPlan.getTestIdentifier(testDescriptor.getUniqueId());

var testExecutionListener = new MockTestExecutionListener();
var executionListenerAdapter = new ExecutionListenerAdapter(testPlan, testExecutionListener);

var reason = "Test skipped due to condition";
executionListenerAdapter.executionSkipped(testDescriptor, reason);

assertThat(testExecutionListener.skippedIdentifier).isEqualTo(testIdentifier);
assertThat(testExecutionListener.skipReason).isEqualTo(reason);
}

@Test
void testExecutionFinished() {
var testDescriptor = getSampleMethodTestDescriptor();

var discoveryResult = new LauncherDiscoveryResult(
Map.of(mock(), EngineResultInfo.completed(testDescriptor, DiscoveryIssueNotifier.NO_ISSUES)), mock(),
dummyOutputDirectoryCreator());
var testPlan = InternalTestPlan.from(discoveryResult);
var testIdentifier = testPlan.getTestIdentifier(testDescriptor.getUniqueId());

var testExecutionListener = new MockTestExecutionListener();
var executionListenerAdapter = new ExecutionListenerAdapter(testPlan, testExecutionListener);

var result = mock(TestExecutionResult.class);
executionListenerAdapter.executionFinished(testDescriptor, result);

assertThat(testExecutionListener.finishedIdentifier).isEqualTo(testIdentifier);
assertThat(testExecutionListener.executionResult).isEqualTo(result);
}

@Test
void testFileEntryPublished() {
var testDescriptor = getSampleMethodTestDescriptor();

var discoveryResult = new LauncherDiscoveryResult(
Map.of(mock(), EngineResultInfo.completed(testDescriptor, DiscoveryIssueNotifier.NO_ISSUES)), mock(),
dummyOutputDirectoryCreator());
var testPlan = InternalTestPlan.from(discoveryResult);
var testIdentifier = testPlan.getTestIdentifier(testDescriptor.getUniqueId());

var testExecutionListener = new MockTestExecutionListener();
var executionListenerAdapter = new ExecutionListenerAdapter(testPlan, testExecutionListener);

var fileEntry = mock(FileEntry.class);
executionListenerAdapter.fileEntryPublished(testDescriptor, fileEntry);

assertThat(testExecutionListener.fileEntryIdentifier).isEqualTo(testIdentifier);
assertThat(testExecutionListener.publishedFileEntry).isEqualTo(fileEntry);
}

private TestDescriptor getSampleMethodTestDescriptor() {
var localMethodNamedNothing = ReflectionUtils.findMethod(this.getClass(), "nothing",
new Class<?>[0]).orElseThrow();
Expand All @@ -72,12 +169,64 @@ static class MockTestExecutionListener implements TestExecutionListener {
@Nullable
public ReportEntry entry;

@Nullable
public TestIdentifier dynamicallyRegisteredIdentifier;

@Nullable
public TestIdentifier startedIdentifier;

@Nullable
public TestIdentifier skippedIdentifier;

@Nullable
public String skipReason;

@Nullable
public TestIdentifier finishedIdentifier;

@Nullable
public TestExecutionResult executionResult;

@Nullable
public TestIdentifier fileEntryIdentifier;

@Nullable
public FileEntry publishedFileEntry;

@Override
public void dynamicTestRegistered(TestIdentifier testIdentifier) {
this.dynamicallyRegisteredIdentifier = testIdentifier;
}

@Override
public void executionStarted(TestIdentifier testIdentifier) {
this.startedIdentifier = testIdentifier;
}

@Override
public void executionSkipped(TestIdentifier testIdentifier, String reason) {
this.skippedIdentifier = testIdentifier;
this.skipReason = reason;
}

@Override
public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
this.finishedIdentifier = testIdentifier;
this.executionResult = testExecutionResult;
}

@Override
public void reportingEntryPublished(TestIdentifier testIdentifier, ReportEntry entry) {
this.testIdentifier = testIdentifier;
this.entry = entry;
}

@Override
public void fileEntryPublished(TestIdentifier testIdentifier, FileEntry fileEntry) {
this.fileEntryIdentifier = testIdentifier;
this.publishedFileEntry = fileEntry;
}

}

}