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

  1. 在方法名上点击右键run as ->TestNG Test ,这时就会运行该方法,如果该方法引用了外部参数,会默认付空值,比如上面的sayHello()方法,会输出Hello,I'm null, null years old!
  2. 在文件空白处点击右键run as ->TestNG Test,这时会运行该类下所有带@Test标记的方法
    注意、这种运行方式要求类中必须有无参构造方法,否则会报错

3 通过TestNG配置文件来运行(推荐)

  1. 生成配置文件,在Eclipse 的类导航或包导航试图(左侧那个目录树)中右键点击类名,选择TestNG->Convert to TestNG,点击Finish,即可生成配置文件。
  2. 运行配置文件:在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文件中指定的,所以在打包的时候一定要注意把该类和他依赖的类都打到包里,否则会无法运行

posted @ 2019-07-20 20:06  背负苍穹  阅读(2274)  评论(0编辑  收藏  举报