gpt4 book ai didi

java - @Before 和@BeforeClass 有什么意义?

转载 作者:行者123 更新时间:2023-11-29 07:23:52 24 4
gpt4 key购买 nike

为什么不使用这些 JUnit 4 注释,我们为什么不使用静态和实例初始化程序 block 呢?以下代码显示只要静态初始化程序 block 运行,@BeforeClass 方法就会运行,而当实例初始化程序 block 运行时,@Before 方法就会运行。那么我们为什么需要它们?

public class DemoTest {

static {
System.out.println("init static");
}

{
System.out.println("init instance");
}

@BeforeClass
public static void setUpAll() {
System.out.println("beforeClass");
}

@Before
public void setUp() {
System.out.println("before");
}

@Test
public void test1() {
System.out.println("test1");
}

@Test
public void test2() {
System.out.println("test2");
}
}

最佳答案

如果您的测试用例不需要 @Before 等提供的附加功能,您当然可以自由使用它们。

由于您不能使用这些结构做与@After@AfterClass 相同的事情,但是对称性是有意义的,以相同格式包含它们的可重用性和可读性。

此外,对于诸如 @Rule@ClassRule 注释字段(以及 @Mock 注释,如果您使用 MockitoJUnit4Runner@Autowired 如果您使用的是 SpringJUnitRunner),这些保证在您输入适当的 @Before 时已经初始化等JUnit中的方法。如果您使用的是静态/实例初始化程序 block ,则没有这样的保证(事实上,可以保证它们不会)。

关于java - @Before 和@BeforeClass 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com