2013-07-30 21 views
0

下面我TestNG的配置不工作:TestNG的 - 如何在不併行進程運行包

<test verbose="2" name="JavaScript Layer Tests" preserve-order="true" parallel="false"> 
    <packages> 
    <package name="com.bla.foo"/> 
    <package name="com.bla.bar/> 
    </packages> 
</test> 

我基本上要在秩序和沒有並行運行TestNG班那些包。每個班級的方法都使用@dependsOnMethods

這裏的原因是我使用Selenium,我需要一次只打開一個瀏覽器。

如果我切換TestNG的xml文件列出所有的類,那麼它工作正常,但這使得添加新類需要更改xml文件。

有沒有辦法讓這個工作包?我嘗試設置並行爲真,並限制爲1個線程,但這也不起作用。

+0

會[這裏](http://stackoverflow.com/questions/8990683/use-same-web-driver-throughout-selenium-suite)發表不行? – radimpe

+0

我已經在使用一個共享驅動程序 - 問題是我看到TestA:Method1被調用,然後調用TestB:Method1,然後TestA:Method2。但TestB:Method1移動到另一個頁面(它測試另一個html頁面),因此TestA:Method2正在針對錯誤的頁面運行。 – user910046

+0

您不應該在單個測試中測試您想要的整個流程嗎?所以TestA調用Method1然後調用Method2,同樣TestB調用Method1然後調用Method2。你也可以模塊化你的方法,使它們可重用,所以如果你必須多次訪問同一頁面進行不同的測試,你可以隨時調用同一個模塊。 – radimpe

回答

0

讓我猜測,你可以使用Eclipse運行這個TestNG文件。 No mater在你的xml中你的配置是什麼,你必須檢查你的IDE是否運行配置。如果你試圖從你的XML'test'模式運行你的測試,但是你的IDE可能會以'class'mode或'methods'模式運行它。請交叉檢查一次。

更新:我不認爲並行屬性值爲false請參考official documentations。只是刪除該屬性,並嘗試如下,

<test verbose="2" name="JavaScript Layer Tests" preserve-order="true"> 
    <packages> 
    <package name="com.bla.foo"/> 
    </packages> 
    <packages> 
    <package name="com.bla.bar/> 
    </packages> 
</test> 

注:確保每個包都有一個確切的TestNG的類文件。

+0

我正在運行它通過mvn測試 – user910046

+0

@ user910046請找到我的更新 – Karthikeyan

+0

問題仍然發生在一個包內 - com.bla.foo內的類仍然並行運行。 – user910046

0

我們可以按照以下方式指定軟件包。希望這用在描述一個瀏覽器幫助

<suite> 
    <test name="Any logical name" preserve-order="true" verbose="2"> 
     <packages> 
      <package name="Name of the package 1" /> 
     </packages> 
    </test> 

    <test name="Any logical name" preserve-order="true" verbose="2"> 
      <packages> 
       <package name="Name of the package 2" /> 
      </packages> 
     </test> 
</suite>