@BeforeClass上的JUnit超时

时间:2015-02-09 16:48:23

标签: java junit

使用@Test注释的JUnit中的测试可以设置以ms为单位的超时,例如:

@Test(timeout = 1000)
public void testSomething(){
    ....
}

但是,我似乎找不到在设置(或@BeforeClass)上设置超时的方法。

还有其他合理的方法吗?我想知道@BeforeClass是否有某种原因不能超时?

我想这样做:

@BeforeClass(timeout = 1000) // <-- Not currently possible
public static void setup(){
    doSomethingWhichMayRunForever();
}

修改:添加&#39;静态&#39;

4 个答案:

答案 0 :(得分:1)

我在下面的gitHub中找到了与此相关的一些代码。我的应用程序中也有一个场景,在@BeforeClass中有超时。我认为在基于@BeforeClass的注释方法中添加条件/逻辑并不是一个好习惯。所以,我在每个@Test方法中处理了条件。

如果有帮助,请参阅链接:

https://github.com/jaruk/junit/commit/c5176f18139b9b99dfbc6540d4a6b6a8f049e568

答案 1 :(得分:1)

在JUnit中标记整个类的超时是不可能的

在TestNG中,您可以通过使用@Test注释来分配测试类来实现这一点:

@Test(timeOut = 500)
public class Mavenproject1Suite {...}

答案 2 :(得分:0)

在JUnit中,使用@BeforeClass注释的方法必须是静态的,我想知道如何在没有它的情况下执行你的方法

答案 3 :(得分:0)

您能做的最接近的是在测试类级别提供超时:

@RunWith(JUnit4.class)
public final class MyTest {
  @ClassRule
  public static Timeout classTimeout = new Timeout(200, TimeUnit.SECONDS);

  @BeforeClass
  public static void setup(){
    doSomethingWhichMayRunForever();
  }

  @Test
  public void test1() throws Exception {
    // Your test code here
  }
}