使用@Test注释的JUnit中的测试可以设置以ms为单位的超时,例如:
@Test(timeout = 1000)
public void testSomething(){
....
}
但是,我似乎找不到在设置(或@BeforeClass)上设置超时的方法。
还有其他合理的方法吗?我想知道@BeforeClass是否有某种原因不能超时?
我想这样做:
@BeforeClass(timeout = 1000) // <-- Not currently possible
public static void setup(){
doSomethingWhichMayRunForever();
}
修改:添加&#39;静态&#39;
答案 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
}
}