junit-vintage引擎是否与早于4.12.x的junit版本兼容?
在我的情况下,在使用junit 4.7并在intellij idea中运行时,测试发现期间似乎存在问题。
我目前正在运行的想法2017.3.3版本,junit-jupiter'5.0.3',junit-vintage-engine'4.12.3'和junit 4.7
在模块中运行所有测试时,我看到以下异常。
线程“main”中的异常java.lang.NoClassDefFoundError:org / junit / experimental / categories / Category 在org.junit.vintage.engine.descriptor.VintageTestDescriptor.addCategoriesAsTags(VintageTestDescriptor.java:86) at org.junit.vintage.engine.descriptor.VintageTestDescriptor.getTags(VintageTestDescriptor.java:77) 在org.junit.platform.launcher.TestIdentifier.from(TestIdentifier.java:60) 来自$ 0的org.junit.platform.launcher.TestPlan.lambda $(TestPlan.java:80) 在org.junit.platform.engine.TestDescriptor.accept(TestDescriptor.java:239) at org.junit.platform.engine.TestDescriptor.lambda $ accept $ 0(TestDescriptor.java:241) 在java.lang.Iterable.forEach(Iterable.java:75) 在org.junit.platform.engine.TestDescriptor.accept(TestDescriptor.java:241) 来自$ 1的org.junit.platform.launcher.TestPlan.lambda $(TestPlan.java:81) at java.util.LinkedHashMap $ LinkedValues.forEach(LinkedHashMap.java:608) 在org.junit.platform.launcher.TestPlan.from(TestPlan.java:81) 在org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:82) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:48) 在com.intellij.rt.execution.junit.IdeaTestRunner $ Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) 在com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 引起:java.lang.ClassNotFoundException:org.junit.experimental.categories.Category at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ......还有16个
我将异常的来源缩小到VintageTestDescriptor.java中的几行(盯着第86行)
private void addCategoriesAsTags(Set<TestTag> tags) {
Category annotation = (Category)this.description.getAnnotation(Category.class);
类别在junit 4.12的实验包中,似乎在junit 4.7中缺失。我无法找到老式引擎兼容的junit版本的文档。
答案 0 :(得分:3)
junit-vintage-engine与JUnit 4.12兼容。
有没有理由不更新到4.12?