/* * Copyright 2015-2017 the original author or authors. * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html */ package org.junit.vintage.engine; import static org.junit.platform.commons.meta.API.Usage.Experimental; import static org.junit.platform.engine.TestExecutionResult.successful; import static org.junit.vintage.engine.descriptor.VintageTestDescriptor.ENGINE_ID; import java.util.Optional; import java.util.logging.Logger; import org.junit.platform.commons.meta.API; import org.junit.platform.engine.EngineDiscoveryRequest; import org.junit.platform.engine.EngineExecutionListener; import org.junit.platform.engine.ExecutionRequest; import org.junit.platform.engine.TestDescriptor; import org.junit.platform.engine.TestEngine; import org.junit.platform.engine.UniqueId; import org.junit.platform.engine.support.descriptor.EngineDescriptor; import org.junit.vintage.engine.descriptor.RunnerTestDescriptor; import org.junit.vintage.engine.discovery.JUnit4DiscoveryRequestResolver; import org.junit.vintage.engine.execution.RunnerExecutor; /** * @since 4.12 */ @API(Experimental) public class VintageTestEngine implements TestEngine { private static final Logger LOG = Logger.getLogger(VintageTestEngine.class.getName()); @Override public String getId() { return ENGINE_ID; } /** * Returns {@code org.junit.vintage} as the group ID. */ @Override public Optional<String> getGroupId() { return Optional.of("org.junit.vintage"); } /** * Returns {@code junit-vintage-engine} as the artifact ID. */ @Override public Optional<String> getArtifactId() { return Optional.of("junit-vintage-engine"); } @Override public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId uniqueId) { EngineDescriptor engineDescriptor = new EngineDescriptor(uniqueId, "JUnit Vintage"); new JUnit4DiscoveryRequestResolver(engineDescriptor, LOG).resolve(discoveryRequest); return engineDescriptor; } @Override public void execute(ExecutionRequest request) { EngineExecutionListener engineExecutionListener = request.getEngineExecutionListener(); TestDescriptor engineTestDescriptor = request.getRootTestDescriptor(); engineExecutionListener.executionStarted(engineTestDescriptor); RunnerExecutor runnerExecutor = new RunnerExecutor(engineExecutionListener, LOG); executeAllChildren(runnerExecutor, engineTestDescriptor); engineExecutionListener.executionFinished(engineTestDescriptor, successful()); } private void executeAllChildren(RunnerExecutor runnerExecutor, TestDescriptor engineTestDescriptor) { // @formatter:off engineTestDescriptor.getChildren() .stream() .map(RunnerTestDescriptor.class::cast) .forEach(runnerExecutor::execute); // @formatter:on } }