The technical principles of the Junit Vintage Engine framework in the Java class library analysis
Analysis of the technical principles of the Junit Vintage Engine framework in the Java class library
Junit Vintage Engine is part of Junit 5, which allows developers to run test cases based on Junit 3 and Junit 4 in the new Junit 5 environment.This article will analyze the technical principles of using the Junit Vintage Engine framework in the Java library and provide the corresponding Java code example.
Introduction to Junit Vintage Engine
Junit Vintage Engine is a framework designed for the backwardness, allowing the Junit 5 engine to run the old version of the test case.This is very useful for items that need to continue using the old version of the test framework in the new Junit 5 environment.For example, if the project has used Junit 3 or Junit 4 and hopes to migrate it to Junit 5, but because there are many test cases or other reasons, you cannot immediately convert it to Junit 5.Essence
Second, the technical principles of using Junit Vintage Engine
The following steps are required to use the Junit Vintage Engine framework in the Java library:
1. Add junit vintage engine dependency
First, add the dependencies of the Junit Vintage Engine in the project construction tool (such as Maven) configuration file.In Maven, you can introduce Junit Vintage Engine by adding the following dependencies in the POM.XML file:
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
2. Create a junit vintage engine
Next, the Junit Vintage engine is created in the test class that needs to run the old version of the test case.You can use the `Create ()" method of the `vintagetestestEnginebuilder` class to create an engine instance, as shown below:
TestEngine engine = VintageTestEngineBuilder
.usingClasspathResourceSelector()
.usingClassLoader(getClass().getClassLoader())
.build();
3. Run test case
Finally, use Junit 5's `LaNcher` class to run test cases.Set the method of `Launcher` 'to register the Junit Vintage engine, and then use the` Execute () method to run the test.
Launcher launcher = LauncherFactory.create();
launcher.registerTestEngine(engine);
TestPlan testPlan = launcher.discover(engine,
new DiscoverySelectors.SelectorResolver() {
@Override
public TestDescriptor select(UniqueId uniqueId) {
return engine.discover(uniqueId);
}
});
launcher.execute(testPlan);
Third, sample code
The following is a simple example. How to show how to use the Junit Vintage Engine framework in the Java class library:
import org.junit.platform.launcher.Launcher;
import org.junit.platform.launcher.LauncherFactory;
import org.junit.platform.launcher.TestExecutionListener;
import org.junit.platform.launcher.TestIdentifier;
import org.junit.platform.launcher.TestPlan;
import org.junit.vintage.engine.VintageTestEngineBuilder;
import org.junit.vintage.engine.descriptor.VintageTestDescriptor;
public class JUnitVintageEngineExample {
public static void main(String[] args) {
// Create a junit vintage engine
TestEngine engine = VintageTestEngineBuilder
.usingClasspathResourceSelector()
.usingClassLoader(JUnitVintageEngineExample.class.getClassLoader())
.build();
// Register and execute test cases
Launcher launcher = LauncherFactory.create();
launcher.registerTestEngine(engine);
TestPlan testPlan = launcher.discover(engine, new DiscoverySelectors.SelectorResolver() {
@Override
public TestDescriptor select(UniqueId uniqueId) {
return engine.discover(uniqueId);
}
});
launcher.execute(testPlan, new TestExecutionListener() {
// Execute the corresponding operation before and after the test execution
@Override
public void executionStarted(TestIdentifier testIdentifier) {
System.out.println("Starting test: " + testIdentifier.getDisplayName() + "...");
}
@Override
public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
System.out.println("Test " + testIdentifier.getDisplayName() + " finished!");
}
});
}
}
Through the above example code, we can use the Junit Vintage Engine framework to run the old version of the test case in the Java library.
in conclusion
In this article, we analyze the technical principles of using the Junit Vintage Engine framework in the Java library, and demonstrate how to use the framework through the example code.Junit Vintage Engine provides a lot of flexibility and convenience for the project migration to Junit 5, while retaining the compatibility of the old version of the test framework.I hope this article can help you better understand and use Junit Vintage Engine.