4 - 運行
TestNG可以使用多種方式調用:
- 命令列
- ant
- Eclipse
- IntelliJ's IDEA
本節將只介紹如何從命令列運行TestNG。如果您對其他方式感興趣,那麼就點擊上面的連結查看更多資訊。
假設TestNG已經在你的類路徑中,最簡單的調用方式如下:
java org.testng.TestNG testng1.xml [testng2.xml testng3.xml ...]
你至少要指定一個XML檔案,它描述了你要啟動並執行TestNG suite。此外,還有如下命令列參數:
命令列參數
| 選項 |
參數 |
說明 |
| -d |
目錄 |
報告會產生的目錄 (預設是test-output). |
| -excludegroups |
逗號分隔的組列表 |
要在當前運行中被排除的組列表 |
| -groups |
逗號分隔的組列表 |
想要啟動並執行組(e.g. "windows,linux,regression"). |
| -listener |
逗號分隔的Java類列表,它們都可以在你的類路徑中找到 |
讓你指定你自己的監聽器。這些類需要實現org.testng.ITestListener |
| -parallel |
方法 | 測試 |
如果指定了,那麼在運行測試的時候,所使用的預設的機制就會決定如何去使用並行 | 線程。反之則不會。 這是可以在suite定義中被覆蓋的 |
| -reporter |
自訂報告監聽器的擴充配置 |
類似於 -listener 選項,允許在報告器執行個體中配置JavaBean的樣式屬性。例如: -reporter com.test.MyReporter:methodFilter=*insert*,enableFiltering=true 這個選項不限次數,根據需要一樣一個。 |
| -sourcedir |
分號間隔的目錄列表 |
使用了JavaDoc類型的annotation的源碼所在的目錄。這個選項只有你在使用JavaDoc類型的註解時才會有用。(e.g. "src/test" or "src/test/org/testng/eclipse-plugin;src/test/org/testng/testng"). |
| -suitename |
test suite預設的名字
|
指明了在命令列中定義的test suite的名字。這個選項在suite.xml或源碼指定了不同的名字時會被忽略。如果使用雙引號括起來,就可在名字中使用空格。例如:"like this"。 |
| -testclass |
逗號分隔的類列表,它們必須能在類路徑中被找到 |
逗號分隔的測試類別的列表 (e.g. "org.foo.Test1,org.foo.test2"). |
| -testjar |
一個jar檔案 |
指定了一個包含了測試類別的Jar檔案。如果testng.xml 在jar檔案的根目錄被找到,就使用之,反之,jar檔案中所有的類都會被當成測試類別。 |
| -testname |
測試所使用的預設名字 |
它為在命令列中定義的測試指定了名字。這個選項在suite.xml或源碼指定了不同的名字時會被忽略。如果使用雙引號括起來,就可在名字中使用空格。例如:"like this"。 |
| -testrunfactory |
可以在類路徑中找到的Java類 |
讓你指定你自己的測試回合器,相關的類必須實現 org.testng.ITestRunnerFactory. |
| -threadcount |
在並行測試的時候預設使用的線程數 |
並行運行中所使用的最大線程數。只在使用並行模式中有效(例如,使用-parallel選項)。它可以在suite定義中被覆蓋。 |
上面的參數說明可以通過不帶任何參數運行TestNG來獲得。
你也可以把命令列開關放到檔案中,例如說 c:/command.txt,之後告訴 TestNG 使用這個檔案來解析其參數:
C:> more c:/command.txt
-d test-output testng.xml
C:> java org.testng.TestNG @c:/command.txt
此外TestNG也可以在命令列下向其傳遞JVM參數。例如:
java -Dtestng.test.classpath="c:/build;c:/java/classes;" org.testng.TestNG testng.xml
如下是TestNG所能理解的屬性:
系統屬性
| 屬性 |
類型 |
說明 |
| testng.test.classpath |
分號分的一系列目錄,其中包含了你的測試類別 |
如果指定了這個屬性,TestNG就會尋找你的測試類別而不是類路徑。這在你的類路徑中有很多類,而大多數又不是測試類別,或者在xml檔案中使用 package 標記的時候會很方便。 |
例子:
java org.testng.TestNG -groups windows,linux -testclass org.test.MyTest
注意 ant task 和 testng.xml 允許你使用更多的參數來運行TestNG(要包含的方法、指定的參數等等),所以你在學習TestNG的時候考慮使用命令列,因為這樣能讓你快速進步。