/*
* Copyright (c) 2006 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package mockit.integration.junit5;
import org.junit.jupiter.api.extension.*;
import org.junit.jupiter.engine.extension.*;
import org.junit.platform.engine.*;
import org.junit.platform.engine.support.descriptor.*;
import mockit.*;
import mockit.internal.startup.*;
public final class JMockitTestEngine implements TestEngine
{
private static TestDescriptor descriptor;
public JMockitTestEngine()
{
if (descriptor != null) {
return; // already created in same test run
}
descriptor = new EngineDescriptor(UniqueId.forEngine("jmockit"), "JMockit integration");
if (Startup.initializeIfPossible()) {
new MockUp<ExtensionRegistry>() {
@Mock
ExtensionRegistry createRegistryWithDefaultExtensions(Invocation inv, ConfigurationParameters configParams)
{
ExtensionRegistry registry = inv.proceed();
Extension extension = new JMockitExtension();
registry.registerExtension(extension, extension);
return registry;
}
};
}
}
@Override
public String getId() { return "jmockit"; }
@Override
public TestDescriptor discover(EngineDiscoveryRequest discoveryRequest, UniqueId uniqueId) { return descriptor; }
@Override
public void execute(ExecutionRequest executionRequest)
{
EngineExecutionListener executionListener = executionRequest.getEngineExecutionListener();
executionListener.executionStarted(descriptor);
executionListener.executionFinished(descriptor, TestExecutionResult.successful());
}
}