小编Hen*_*rik的帖子

JUnit 5 之前的 TestFactory 注释

@TestFactory在JUnit5中写了一个动态测试,现在我看到我不能@Before为动态测试做,参考 JUnit 5用户指南-编写测试注释

@Before在 TestFactory 之前是否有任何解决方法可以执行或类似操作?

我想放入一个方法,@Before因为它只是初始化的东西:

public static void initialize() throws Exception{
    buildTest = new XQueryTestHelper();
    buildTest.initialization();
    
    listTestSuiteIdentifier = buildTest.getListTestsuiteIdentifier();
    arrayHdrInbPayTestcases = buildTest.getHdrInbPayTestcases();
    arrayHeaderAndBodyTestcases = buildTest.getHeaderAndBodyTestcases();
    listHeaderAndBodyTestSuites = buildTest.getHeaderAndBodyTestSuites();
    listHdrInbPayTestSuites = buildTest.getHdrInbPayTestsuites();
    
}
Run Code Online (Sandbox Code Playgroud)

解决方案:

在动态测试中使用@BeforeAll/@AfterAll是可能的。参考 改进 DynamicTest 生命周期的文档

动态测试生命周期

动态测试的执行生命周期与标准@Test案例完全不同。具体来说,动态测试没有任何生命周期回调。这意味着不会为动态测试执行@BeforeEach@AfterEach方法及其相应的扩展回调。换句话说,如果您在动态测试的 lambda 表达式中访问测试实例中的字段,则这些字段将不会被回调方法或相同@TestFactory方法生成的动态测试执行之间的扩展重置。

java annotations dynamic junit5

3
推荐指数
1
解决办法
1016
查看次数

IntelliJ JUnit5 ClassNotFoundError

尝试运行TestFactory时出现以下错误:

Mär 20, 2017 3:39:05 PM org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry loadTestEngines
INFORMATION: Discovered TestEngines with IDs: [junit-jupiter, junit-vintage]
Exception in thread "main" java.lang.NoClassDefFoundError: org/opentest4j/TestAbortedException
    at org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor.<clinit>(TestFactoryTestDescriptor.java:47)
    at org.junit.jupiter.engine.discovery.TestFactoryMethodResolver.resolveMethod(TestFactoryMethodResolver.java:56)
    at org.junit.jupiter.engine.discovery.TestMethodResolver.resolveElement(TestMethodResolver.java:63)
    at org.junit.jupiter.engine.discovery.JavaElementsResolver.tryToResolveWithResolver(JavaElementsResolver.java:164)
    at org.junit.jupiter.engine.discovery.JavaElementsResolver.lambda$resolve$8(JavaElementsResolver.java:155)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1548)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolve(JavaElementsResolver.java:158)
    at org.junit.jupiter.engine.discovery.JavaElementsResolver.lambda$resolveForAllParents$4(JavaElementsResolver.java:128)
    at java.lang.Iterable.forEach(Iterable.java:75)
    at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveForAllParents(JavaElementsResolver.java:127)
    at org.junit.jupiter.engine.discovery.JavaElementsResolver.resolveMethod(JavaElementsResolver.java:65)
    at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.lambda$resolveSelectors$3(DiscoverySelectorResolver.java:63)
    at java.util.ArrayList.forEach(ArrayList.java:1249)
    at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:62)
    at org.junit.jupiter.engine.JupiterTestEngine.resolveDiscoveryRequest(JupiterTestEngine.java:50)
    at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:43)
    at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:109)
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:79)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea maven junit5

0
推荐指数
1
解决办法
2914
查看次数

标签 统计

java ×2

junit5 ×2

annotations ×1

dynamic ×1

intellij-idea ×1

maven ×1