2017-06-01 124 views
0

我想问一下你对我的问题的帮助。我有包含50个测试脚本的Regression Suite(.xml)。我们能够使用Maven在Jenkins中执行回归套件,但它突然挂起/卡住。例如:如何跳过在执行期间挂起/卡住的测试Selenium - Maven - Jenkins

测试用例1-15已完成,但在测试用例16中,构建/执行突然卡住/挂起某个步骤。我试图在我的Eclipse中执行测试用例16以了解哪个步骤/代码存在问题,但它工作正常。

我想问一下,如果有一个maven-surefire功能,当它检测到测试脚本卡住/挂起一段时间(例如5分钟)时,它将会失败,然后继续执行测试脚本到下一个。

请参见下面的我的pom.xml

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <target>1.8</target> 
       <source>1.8</source> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.19.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <testFailureIgnore>false</testFailureIgnore> 
       <suiteXmlFiles> 
        <suiteXmlFile>${xmlPath}</suiteXmlFile> 
       </suiteXmlFiles> 
      </configuration> 
     </plugin> 
    </plugins> 
    </build> 
+0

它是如何涉及到#硒?你能考虑展示你的作品吗?请务必在执行挂起/停顿的行上提及。谢谢 – DebanjanB

+0

我们使用硒来创建和测试我们的自动脚本。当我们在jenkins中执行我们的脚本时,我们使用maven。实际上,我们无法看到代码中的确切行,因为它在执行期间挂起/卡住。 –

回答

1

您可以将超时添加到测试注释中的测试本身:

@Test(timeout=600000) //Fails if the method takes longer than 10 minutes 

这是以毫秒为单位,所以你只需要决定格言UM的时间长度测试应该采取然后calculate it from there

编辑:如果你只是想不必超时添加到每个单独的测试,那么你可以设置在基类的规则,一旦设置:

import org.junit.Rule; 
import org.junit.rules.TestWatcher; 

... 

@Rule 
public TestWatcher watcher = new TestWatcher() { 
    @Override 
    public Statement apply(Statement base, Description description) {   
     if (description.getMethodName().toLowerCase().contains("thisTestTakesLonger")) { 
      return new FailOnTimeout(base, 600000); //10 minutes = 600000 
     } else { 
      return new FailOnTimeout(base, 300000); //5 minutes = 300000 
     } 
    } 
}; 

的else是全局超时时,如果如果你有一个单独的测试,需要较长的时间(你可能只是想在其他位,如果每个测试是差不多的长度)

+0

我认为这是一个很好的解决方法。但是有没有其他方法可以让我更新POM,然后所有更改都将应用于所有脚本? –

+0

我不知道在POM中是否有一种方法,但是如果它只是在一个地方找到一种方法,那么如果你的测试是从基类继承的,那么你可以在那里设置一个全局超时。我不记得我们是如何做到的(我认为这是一条规则),但我会在早上回到工作时更新答案。 – sideshowmanny

+0

好的。我会等待你的回答。谢谢 。 :) –

0

你可以通过Maven的pom.xml中的这个属性设置为true忽略测试失败

<testFailureIgnore>true</testFailureIgnore> 
+0

似乎OP正在要求一种方式来检索正在执行的'thread'挂起/卡住。谢谢 – DebanjanB