2012-05-14 56 views
1

运行我有几个,我想用TestNG运行起来DAO单元测试类,然而TestNG的尝试并行导致一些回滚失败运行它们。虽然我想运行我的单元测试类顺序运行,我也希望能够指定一个最小时间在下次运行测试之前TestNG的必须等待。这是可以实现的吗?TestNG的测试顺序与时间间隔

P.S.据我所知,TestNG的可以告诉运行在SingleThread测试类的全部测试,我可以指定使用反正组方法调用的顺序,所以也许这不是一个问题。

回答

0

怎么样一个hard dependency 2次测试之间?如果你写的:

@Test 
public void test1() { ... } 

@Test(dependsOnMethods = "test1", alwaysRun = true) 
public void test2() { ... } 

然后test2将始终test1后运行

别忘了alwaysRun = true,否则如果test1失败,test2将被跳过!

+0

嗨Romaintaz,谢谢,但正如我所说的问题是不是与测试类中的测试之间的依赖关系(我已经用于该dependsOnGroups),问题是运行多个测试类,一个接一个地(如在测试套件中)。 – dchucks

0
  1. 如果您不想并行运行您的类,则需要将套件的parallel属性指定为false。默认情况下,它是假的。所以我会认为它应该默认顺序运行,除非你调用测试的方式有所改变。

  2. 要在您的类之间添加一点延迟,您可以在用@AfterClass注释的方法中添加延迟逻辑。 AFAIK testng没有办法在testng xml或commandline中指定它。有一个超时属性,但更多的是用于超时测试,而不是你正在寻找的。

用XML你的测试之间加入延时,即测试代码,那么你可以尝试实施ITestListener - onFinish方法,其中你可以添加你的延迟代码。它在每个<test>之后运行。如果在每个测试用例之后都需要延迟,那么在IInvokedMethodListener - AfterInvocation()中实现延迟代码,AfterInvocation()在每个测试方法运行后运行。当你调用你的套件时,你需要指定监听器。

希望它有帮助..

0

以下是我在一些测试中使用的。

首先,定义的实用方法是这样的:

// make thread sleep a while, so that reduce effect to subsequence operation if any shared resource, 
private void delay(long milliseconds) throws InterruptedException { 
    Thread.sleep(milliseconds); 
} 

private void delay() throws InterruptedException { 
    delay(500); 
} 

然后,调用测试方法内的方法中,在结束或开始。

@Test 
public void testCopyViaTransfer() throws IOException, InterruptedException { 
    copyViaTransfer(new File(sourcePath), new File(targetPath)); 
    delay(); 
}