我想要使用TestNG一起运行几个DAO单元测试类,但是TestNG尝试并行运行它们导致一些回滚失败。虽然我想按顺序运行我的单元测试类,但我还希望能够指定TestNG在运行下一个测试之前必须等待的最小时间。这可以实现吗?
P.S。我知道可以告诉TestNG在SingleThread的测试类中运行所有测试,我能够使用组指定方法调用的顺序,所以这可能不是问题。
答案 0 :(得分:0)
两次测试之间hard dependency怎么样?如果你这样写:
@Test
public void test1() { ... }
@Test(dependsOnMethods = "test1", alwaysRun = true)
public void test2() { ... }
然后test2
将始终在 test1
之后运行。
不要忘记alwaysRun = true
,否则如果test1
失败,则会跳过test2
!
答案 1 :(得分:0)
如果您不想并行运行类,则需要将套件的parallel属性指定为false。默认情况下,它是错误的。所以我认为默认情况下它应该按顺序运行,除非你对调用测试的方式有所改变。
为了在类之间添加一点延迟,您可以在使用@AfterClass注释的方法中添加延迟逻辑。 AFAIK testng没有办法在testng xml或命令行中指定它。有一个超时属性,但更多的是超时测试,而不是你想要的。
为了在测试之间添加延迟,即xml中的测试标记,您可以尝试实现ITestListener - onFinish方法,其中您可以添加延迟代码。它在每<test>
之后运行。如果在每个测试用例之后需要延迟,则在IInvokedMethodListener中实现延迟代码 - 在每个测试方法运行后运行的AfterInvocation()。您需要在调用套件时指定侦听器。
希望有所帮助......
答案 2 :(得分:0)
以下是我在某些测试中使用的内容。
首先,定义如下的实用程序方法:
String input=kb.nextLine();
if(input.(isInteger method)&&(int)input==otherint)
do stuff inside here;
else
do different stuff;
然后,在结束或开始时调用测试方法中的方法。
e.g
// 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);
}