Junit 5 套件没有 运行 @BeforeAll 和@AfterAll
Junit 5 suite Does not run @BeforeAll and@AfterAll
我有一个带有@BeforeAll 和@AfterAll 注释的简单Junit 5 Siute。 Suite被执行但是这些方法在所有classes执行前后都没有执行。
package demo;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
@Suite
@SelectClasses({ demo.TestDemoClass1.class, demo.TestDemoClass2.class })
public class TestSuite {
@BeforeAll
public static void start() throws Exception {
System.out.println("Before All from Suite1");
}
@AfterAll
public static void end() throws Exception {
System.out.println("After All from Suite1");
}
}`
中的@BeforeAll
表示注解的方法应该在@Test
、@RepeatedTest
、@ParameterizedTest
、@TestFactory
中的所有方法之前执行33=]当前class;类似于 JUnit 4 的 @BeforeClass。此类方法是继承的(除非它们被隐藏或覆盖)并且必须是静态的(除非使用“per-class”测试实例生命周期)。
同样的情况适用于 @AfterAll
,因此请考虑将 start() 和 end() 方法移动到您的 TestDemoClass1
和 TestDemoClass2
classes 或将你的测试 classes 扩展到一些 BaseClass 并将此方法保留在其中。
public class BaseTest {
@BeforeAll
public static void start() throws Exception {
System.out.println("Before All from Suite1");
}
@AfterAll
public static void end() throws Exception {
System.out.println("After All from Suite1");
}
}
你的测试 classes
public class SampleTestOne extends BaseTest {
@Test
public void testOne(){
System.out.println("Extended test passed!");
}
@Test
public void testTwo(){
System.out.println("Extended test passed!");
}
}
public class SampleTestTwo extends SampleTestOne {
@Test
public void testThree(){
System.out.println("test passed");
}
}
以及最后的结果
或者,您可以在完全解释 here.
的所有测试上下文之前为 运行 代码创建自定义扩展
我有一个带有@BeforeAll 和@AfterAll 注释的简单Junit 5 Siute。 Suite被执行但是这些方法在所有classes执行前后都没有执行。
package demo;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
@Suite
@SelectClasses({ demo.TestDemoClass1.class, demo.TestDemoClass2.class })
public class TestSuite {
@BeforeAll
public static void start() throws Exception {
System.out.println("Before All from Suite1");
}
@AfterAll
public static void end() throws Exception {
System.out.println("After All from Suite1");
}
}`
中的@BeforeAll
表示注解的方法应该在@Test
、@RepeatedTest
、@ParameterizedTest
、@TestFactory
中的所有方法之前执行33=]当前class;类似于 JUnit 4 的 @BeforeClass。此类方法是继承的(除非它们被隐藏或覆盖)并且必须是静态的(除非使用“per-class”测试实例生命周期)。
同样的情况适用于 @AfterAll
,因此请考虑将 start() 和 end() 方法移动到您的 TestDemoClass1
和 TestDemoClass2
classes 或将你的测试 classes 扩展到一些 BaseClass 并将此方法保留在其中。
public class BaseTest {
@BeforeAll
public static void start() throws Exception {
System.out.println("Before All from Suite1");
}
@AfterAll
public static void end() throws Exception {
System.out.println("After All from Suite1");
}
}
你的测试 classes
public class SampleTestOne extends BaseTest {
@Test
public void testOne(){
System.out.println("Extended test passed!");
}
@Test
public void testTwo(){
System.out.println("Extended test passed!");
}
}
public class SampleTestTwo extends SampleTestOne {
@Test
public void testThree(){
System.out.println("test passed");
}
}
以及最后的结果
或者,您可以在完全解释 here.
的所有测试上下文之前为 运行 代码创建自定义扩展