TestNG tests are executed automatically when we build a maven project. We can also run TestNG tests using Eclipse plugin. What if we don’t have the TestNG plugin installed for our IDE and we want to run some specific tests without doing a complete build. In this case, we can run TestNG test classes from a java main method too.

当我们构建一个Maven项目时,TestNG测试会自动执行。 我们还可以使用Eclipse插件运行TestNG测试。 如果我们没有为IDE安装TestNG插件,而又想在不进行完整构建的情况下运行某些特定的测试,该怎么办? 在这种情况下,我们也可以从java main方法运行TestNG测试类。

Java主要方法中的TestNG测试 (TestNG Test from Java Main Method)

Let’s create a simple TestNG test class and a TestNG listener for our example.

让我们为示例创建一个简单的TestNG测试类和一个TestNG侦听器。

package com.journaldev.main;

import org.testng.annotations.Test;

public class Test5 {

	@Test
	public void test() {
		System.out.println("Running test method");
	}
}
package com.journaldev.main;

import org.testng.ISuite;
import org.testng.ISuiteListener;

public class Test5SuiteListener implements ISuiteListener {

	@Override
	public void onStart(ISuite suite) {
		System.out.println("TestNG suite default output directory = "+suite.getOutputDirectory());
		}

	@Override
	public void onFinish(ISuite suite) {
		System.out.println("TestNG invoked methods = " +suite.getAllInvokedMethods());
	}

}

Now we want to run Test5 class tests and also want to add Test5SuiteListener listener to our TestNG test suite. We can easily do this using org.testng.TestNG class.

现在,我们要运行Test5类测试,还想将Test5SuiteListener侦听器添加到我们的TestNG测试套件中。 我们可以使用org.testng.TestNG类轻松地做到这org.testng.TestNG

package com.journaldev.main;

import org.testng.TestNG;

public class TestNGMainClass {

	public static void main(String[] args) {
		TestNG testSuite = new TestNG();
		testSuite.setTestClasses(new Class[] { Test5.class });
		testSuite.addListener(new Test5SuiteListener());
		testSuite.setDefaultSuiteName("My Test Suite");
		testSuite.setDefaultTestName("My Test");
		testSuite.setOutputDirectory("/Users/pankaj/temp/testng-output");
		testSuite.run();
	}

}

Notice that I am also changing TestNG reporting output directory, setting the test suite and test name.

请注意,我还更改了TestNG报告输出目录,设置了测试套件和测试名称。

Just run above class as java application and it should produce following output in the console.

只需在类上作为Java应用程序运行,它就会在控制台中产生以下输出。

TestNG suite default output directory = /Users/pankaj/temp/testng-output/My Test Suite
Running test method
TestNG invoked methods = [Test5.test()[pri:0, instance:com.journaldev.main.Test5@314c508a] 827084938]

===============================================
My Test Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

You should also check for the HTML report generated by above program, it will be something like below image.

您还应该检查上面程序生成HTML报告,如下图所示。

That’s all for running TestNG tests from java main method.

这就是从java main方法运行TestNG测试的全部。

GitHub Repository. GitHub存储库中查看示例代码。

翻译自: https://www.journaldev.com/21261/running-testng-tests-from-java-main-method

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐