gpt4 book ai didi

java - 如何理解@Test & @BeforeClass?

转载 作者:行者123 更新时间:2023-12-02 10:54:07 24 4
gpt4 key购买 nike

我从 JUnit 开始,不理解注释 @Test@BeforeClass
我有以下代码:

public class Toto { 
@BeforeClass
public static void setupOnce() {
final Thread thread = new Thread() {
public void run() {
Main.main(new String[]{"-arg1", "arg2"});
}
};
try {
thread.start();
} catch (Exception ex) {
}
}

为什么@BeforeClass?在这种情况下,setupOnce() 和线程是什么?
我们应该在每个 Java 测试之前添加 @Test 吗?
因此,如果我有 30 个 Java 测试,我应该在每个 Java 文件中包含 @Test public void test() 吗?

最佳答案

@BeforeClass 注解标识了一个方法,该方法应该在此实现单元中包含的任何测试用例之前执行。在这种特殊情况下,此测试类包含一些线程资源的初始化,需要在测试期间在后台执行。

JUnit 定义了四个生命周期事件:

  • @BeforeClass:在执行类(class)的任何其他测试之前。
  • @Before:在运行一个测试之前直接执行,对于任何 @Test 注解的方法都会调用一次。
  • @Test:测试本身,您的应用程序中可能有多个以这种方式注释的方法。
  • @After:测试执行后,与任何错误或失败无关。将会有多次执行,一次执行任何 @Test 注解的方法。
  • @AfterClass:执行此类的任何测试后,

在我的应用程序中,我通常使用 @BeforeClass 带注释的方法执行昂贵的初始化,而真正昂贵的初始化甚至只为整个测试套件执行一次。但这个“事件”是基于一些加速我的开发的黑客行为。

关于java - 如何理解@Test & @BeforeClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382572/

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