2017-06-01 44 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