2012-09-18 177 views
14

即將實施帶有Maven + TestNG + Selenium的測試框架。TestNG.xml套件包含所有文件包所有文件

如何聲明一個suite.xml告訴TestNG運行ALL測試?我已經嘗試了所有這些都無濟於事:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <classes> 
     <class name="*" /> 
    </classes> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <groups> 
     <run> 
     <include name="*" /> 
     <exclude name="disabled" /> 
     </run> 
    </groups> 
    </test> 
</suite> 

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Toplevel TestNG configuration" verbose="10"> 
    <test name="all"> 
    <packages> 
     <package name="*" /> 
    </packages> 
    </test> 
</suite> 

我需要指定不同paramers但所有正在運行的所有測試不同的套件配置。每個我可以明確地列出的例子都列出了每個類或者包,這對我來說意義不大。

+0

我同樣覺得這真的很離奇。它看起來不僅可能,而且很容易在test目錄下創建一個TestNG測試,但是無法更新testng.xml文件,並且注意測試實際上並未作爲部分運行的套件... – dimo414

回答

7

可以通過聲明testng.xml文件

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="sampleTest" parallel="false"> 

    <test name="sample-Test" preserve-order="true" verbose="2"> 
     <packages> 
      <package name="org.sample.something.*"/> 
     </packages> 
    </test> 

</suite> 

添加一個包中的所有測試類有無處可通過測試作爲搜索選項。如果你想做這樣的事情,你必須在代碼中實現套件並在那裏實現搜索場景。

+1

列出數百個軟件包和上千個類肯定是我不打算做的事情。我爲什麼會這樣?這是多餘的信息。 Maven + TestNG默認可以找到所有測試,爲什麼指定套件時這個功能會丟失? (僅限於添加參數...) – sibidiba

+3

您的軟件包名稱可以是正則表達式,將允許您運行一切。但是,這非常昂貴,因爲TestNG必須走你的整個班級路徑來做到這一點。 –

+0

正是我在找什麼。爲什麼class =「\ *」不起作用呢? (遍歷類路徑並不昂貴,因爲它在啓動時只發生一次,手工列出每個類/包*是很昂貴且容易出錯的。) – sibidiba

1

AFAIK testng沒有像你正在尋找的正則表達式的選項。

但是,我認爲你可以讓你在兩個方面想要什麼:

  1. 如果您正在基於Eclipse與TestNG插件。您可以選擇包含所有定義的軟件包的測試文件夾。使用maven它主要是你的src/test/java文件夾,右鍵點擊並運行爲testng。這樣做會創建一個臨時的customsuite.xml文件,它將列出所有的類。您可以將xml保存爲默認的xml。

  2. 帶有maven的surefire插件可以指定includes,然後指定一個模式。 您可以嘗試將它設置爲* / .java,我認爲它會拾取所有測試用例(但未嘗試)。然後你可以調用你的測試作爲mvn測試。

+0

如何在我點擊包時由TestNG設計的這個customsuite.xml ? – R11G

+0

必須在插件代碼中。還是我得到你的問題......? –

+0

是的。我想你已經回答了。 customsuite xml是基於插件代碼設計的。具體來說我們在這裏談論哪個插件? – R11G

17

應該使用*來匹配它們,據我所知。

+3

這就是它!

+0

謝謝!非常有幫助 –

2

假設您有三個級別的軟件包,您的測試級別在com.abc.xyz軟件包下。

<package name="*" /> </packages> , doesn't work. 
<package name="com.*.*" /> doesn't work. 
<package name="com.abc.*" /> does work. 
+0

從測試中,我剛剛做了,下面也將工作: ' <包名稱=「 com *」 /> ' –

+0

感謝Dave,似乎它是正則表達式不是簡單的通配符。就像路易斯說的,*匹配所有。所以COM。*將匹配任何com.abc也comabc.abc(只是猜測) – nighteblis

相關問題