如何理解@Test& @课前?

时间:2010-03-04 20:42:46

标签: java junit junit4

我从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()吗?

2 个答案:

答案 0 :(得分:16)

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

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

  • @BeforeClass:在课堂上的任何其他测试之前将被罚款。
  • @Before:在运行一个测试之前直接执行,对于任何@Test注释方法,它将被调用一次。
  • @Test:测试本身,您可能在应用程序中以这种方式注释了几种方法。
  • @After:执行测试后,无任何错误或失败。将有几个执行,一个用于任何@Test注释方法。
  • @AfterClass:执行此类的任何测试后,

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

答案 1 :(得分:0)

在下面的网址中,您将了解以下主题-

  • 如何在JUnit中定义测试?

    • Junit中使用的注释
      1. @Test
      2. @之前
      3. @之后
      4. @BeforeClass
      5. @AfterClass
      6. @Ignore或@Ignore(“为什么禁用”)
      7. @Test(预期= Exception.class)

https://onlyfullstack.blogspot.com/2019/02/annotations-used-in-junit.html