【问题标题】:Running TestNG test sequentially with time-gap以时间间隔顺序运行 TestNG 测试
【发布时间】:2012-05-22 01:25:38
【问题描述】:

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

附:我知道可以告诉 TestNG 在 SingleThread 的测试类中运行所有测试,无论如何我都可以使用组指定方法调用的顺序,所以这也许不是问题。

【问题讨论】:

    标签: unit-testing junit dao testng


    【解决方案1】:

    两次测试之间的hard dependency 怎么样?如果你这样写:

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

    那么 test2 将始终在 test1 之后运行。

    不要忘记alwaysRun = true,否则如果test1失败,test2会被跳过!

    【讨论】:

    • 嗨 Romaintaz,谢谢,但正如我提到的,问题不在于测试类中的测试之间的依赖关系(我已经为此使用过 dependsOnGroups),问题在于运行多个测试类,一个之后另一个(如在测试套件中)。
    【解决方案2】:
    1. 如果您不想并行运行类,则需要将套件的并行属性指定为 false。默认情况下,它是错误的。所以我认为它应该默认按顺序运行,除非你在调用测试的方式上有一些变化。

    2. 为了在类之间添加一点延迟,您可以在使用 @AfterClass 注释的方法中添加延迟逻辑。 AFAIK testng 没有办法在 testng xml 或命令行中指定它。有一个 timeout 属性,但更多的是用于超时测试,可能不是您想要的。

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

    希望对你有帮助..

    【讨论】:

      【解决方案3】:

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

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

      // 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();
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 2019-01-07
        • 2011-02-09
        • 2020-11-06
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多