目錄
使用了TestNG注解的測試類有各種運行方法,下面就一一列舉一下。為了讓各位朋友有相同的執行體驗,我說一下我使用的工具版本
程序 | 版本 |
---|---|
java | 1.8.0_211 |
Eclipse | 2019-06 (4.12.0) |
TestNG插件 | 6.14.3 |
1 在Eclipse Outline視圖中,點右鍵run as TestNG Test
(不推薦)
需要測試的類:Person
package ngtest;
import org.testng.annotations.Test;
public class Person {
String name;
String age;
static String MOTHER_LAND;
public Person() {
}
public Person(String name, String age) {
super();
this.name = name;
this.age = age;
}
@Test
public void sayHello() {
System.out.println("Hello,I'm " + name + ", " + age + " years old!");
}
@Test
public void introduce() {
System.out.println("Hello world!");
}
@Test
public static void myMotherLand() {
System.out.println(MOTHER_LAND);
}
}
要測試上面的Introduce()方法,可以打開eclpise的outline試圖,window->showView->outline
,然后在outline視圖中被測試的函數名上點擊右鍵,選擇run as ->TestNG Test
。這種方式適用於不需要接收外部參數的方法,或靜態方法。如果該方法不是靜態方法,必須確保該方法不使用外部參數,並且類中有無參構造方法,否則會因為沒有給參數賦值、或者構造對象時調用有參構造方法而我們沒有傳入參數報錯。
由於運行條件限制太死,所以我們不推薦這種方式。
2 在Eclipse類編輯界面,直接點擊右鍵run as TestNG Test
- 在方法名上點擊右鍵
run as ->TestNG Test
,這時就會運行該方法,如果該方法引用了外部參數,會默認付空值,比如上面的sayHello()方法,會輸出Hello,I'm null, null years old!
- 在文件空白處點擊右鍵
run as ->TestNG Test
,這時會運行該類下所有帶@Test標記的方法
注意、這種運行方式要求類中必須有無參構造方法,否則會報錯。
3 通過TestNG配置文件來運行(推薦)
- 生成配置文件,在Eclipse 的類導航或包導航試圖(左側那個目錄樹)中右鍵點擊類名,選擇
TestNG->Convert to TestNG
,點擊Finish,即可生成配置文件。 - 運行配置文件:在Eclipse中運行配置文件有兩種方法:
- 在配置文件中,點擊右鍵,選擇
run as->TestNG Test
- 在左側文件導航欄中,選中testng配置文件,點擊右鍵,選擇
run as->TestNG Test
- 在配置文件中,點擊右鍵,選擇
推薦使用這種方式,這種方式可以傳參、自定義監聽器、根據組篩選運行的類,是最標准的運行方式。
4 通過TestNG類來執行
TestNG也是Java寫的,所以毫無疑問我們可以通過main函數來調用TestNG類來執行。
在main函數中調用被TestNG注解的類
import org.testng.ITestNGListener;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import ngtest.Person;
public class TestPerson {
public static void main(String[] args) {
ITestNGListener tla = new TestListenerAdapter();
TestNG testng = new TestNG();
//設置要執行的testNG類
testng.setTestClasses(new Class[] { Person.class });
testng.addListener(tla);
testng.run();
}
}
在類中調用testng配置文件
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();
}
}
這種執行方法的好處就是可以把代碼打成可執行jar包,TestNG配置文件名設置成參數傳入main函數,配置文件本身作為附件,這樣jar包和配置文件就可以脫離eclipse開發環境獨立運行了。
注意,因為實際要測試的類是在testng.xml文件中指定的,所以在打包的時候一定要注意把該類和他依賴的類都打到包里,否則會無法運行