TestNG在Eclipse中运行的几种方法
目录
使用了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文件中指定的,所以在打包的时候一定要注意把该类和他依赖的类都打到包里,否则会无法运行