我們在Eclipse寫好了基於TestNG的代碼,調試的時候通過Eclipse運行。但是在實際使用的時候有時需要運行代碼的環境上沒有Eclipse,這時怎么辦?
通過main函數調用testng.xml文件,然后打成可執行jar包執行
1 假設我們已經寫好了testng.xml,現在我們需要寫一個主類和main函數用來調用testng.xml
package ngtest;
import java.util.List;
import org.testng.TestNG;
import com.google.common.collect.Lists;
public class TestPerson {
public static void main(String[] args) {
TestNG tng = new TestNG();
List<String> suites = Lists.newArrayList();
//添加要執行的testng.xml文件
suites.add("testng.xml");
tng.setTestSuites(suites);
tng.run();
}
}
2 把項目打成可執行jar包
利用Eclipse自帶的打包工具,
- 在項目名上點擊右鍵,選擇export

- 在彈出的菜單中選擇
java->Runable JAR file,點擊next

- 在當前頁做如下操作:Launch configuration 中選擇主類,Export destination 中設置導出后的路徑和jar包名,在Library handling 選擇第三項(可以選擇任意一一項,第三項是把依賴包放到一個子文件夾中,當運行出現找不到類時,我們可以及時向該文件夾中添加依賴包)

- 在后面彈出的窗口中一路點擊yes 或者 ok,完成后目標就會出現在第三步Export destination設置的位置上。
3 運行jar包
打成的jar包中有程序運行需要的.class文件,但是缺少了testng配置文件,所以需要把testng配置文件放到jar包的同級目錄上,然后雙擊jar包(或者進入cmd命令行,輸入java -jar jar包名)即可執行jar包,執行完后就會在同級目錄上生成TestNG運行結果文件。
在命令行中直接運行TestNG配置文件
命令行運行TestNG的基本語法java org.testng.TestNG testng.xml。
在命令行中運行一個java程序都需要設置classpath環境變量,用來說明要執行的.class文件在哪里(簡單的不需要設置,是因為那個.class文件沒有跨包依賴,而我們正好可以找到他)。我們這里需要設置的classpath包括兩個值,第一個值指向該程序依賴的jar包的位置,第二個值指向要運行的.class文件的位置
這需要如下操作
- 在classpath環境變量中添加TestNG依賴包的路徑,添加環境變量的方法請自行百度,下圖是使用Eclipse 的TestNG插件后TestNG依賴包的位置。可以看到圖中有四個包,這四個都需要添加到classpath環境變量中。

- 在classpath中添加本程序生成的class文件的根目錄,普通項目一般在項目名下的bin文件夾中,maven項目在target文件夾中。
- 在命令行中切換到testng.xml所在的目錄
- 執行
java org.testng.TestNG testng.xml
如果不添加classpath環境變量,也可以在運行時指定classpath的值,比如
D:\workspace\tester>java -classpath "%classpath%;D:\workspace\tester\target\test-classes" org.testng.TestNG testng.xml。
上面-classpath "%classpath%;D:\workspace\tester\target\test-classes"的含義是設置當前運行環境的classpath,classpath包含兩部分,一部分是%classpath%表示引用當前設置的系統環境變量中classpath的值(在系統classpath中我設置了testng依賴包的位置,如果沒有設置系統環境變量classpath,這里需要寫上上面四個包的全路徑,中間用分號分割),第二個值是D:\workspace\tester\target\test-classes表示我的項目編譯后生成的.class文件放在這里。
