如何以编程方式关闭TestNG的默认报告器?
TestNG允许从IntelliJ IDE以及命令行运行测试套件。当用户从IDE或命令行运行testng.xml时,TestNG会生成默认报告。它将所有报告和相应的HTML文件保存在**项目->test-output**文件夹中。如果此文件夹不存在,则TestNG会创建一个。
要以编程方式禁用默认报告,应通过命令行(cmd)运行TestNG。
以下是从命令行运行测试套件的先决条件:
应创建testng.xml文件来定义要执行的测试套件和测试类。
所有相关的**jar**文件都应该在项目文件夹中可用。这包括**testing.jar**、**jcommander.jar**以及测试用例中使用的任何其他**jar**文件。
编译后存储. **class** 文件的**bin**或**out**文件夹的**路径**。
解决此问题的方法/算法:
**步骤1** - 创建不同的测试类,每个类都有不同的@Test方法和一个@BeforeSuite方法。
**步骤2** - 编译类。这将在IntelliJ中创建**out**文件夹,在Eclipse中创建**bin**文件夹。
**步骤3** - 将所有**jar**文件放在**lib**文件夹中。
**步骤4** - 现在创建如下所示的testng.xml。
**步骤5** - 打开**cmd**。
**步骤6** - 使用cd <**project_path**>导航到项目路径。
**步骤7** - 运行以下命令
java -cp <path of lib;> <path of out or bin folder> org.testng.TestNG <path of testng>/testng.xml
示例
以下代码显示如何在运行时禁用默认报告生成:
src/ NewTestngClass.java
import org.testng.TestNG; import org.testng.annotations.*; public class NewTestngClass { // test case 1 @Test() public void testCase1() throws InterruptedException { System.out.println("in test case 1 of NewTestngClass"); } // test case 2 @Test() public void testCase2() throws InterruptedException { System.out.println("in test case 2 of NewTestngClass"); } @BeforeSuite public void name() { TestNG myTestNG = new TestNG(); myTestNG.setUseDefaultListeners(false); System.out.println("Default reports are disabled"); } }
src/testng.xml
这是一个用于组织和运行TestNG测试用例的配置文件。当只需要执行有限的测试而不是完整的套件时,它非常方便。
<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name = "Suite1"> <test name = "test1"> <classes> <class name = " NewTestngClass"/> </classes> </test> </suite>
运行命令:
java -cp .\lib\*;.\out\production\TestNGProject org.testng.TestNG src\testng.xml
输出
Default reports are disabled in test case 1 of NewTestngClass in test case 2 of NewTestngClass =============================================== Suite1 Total tests run: 2, Passes: 2, Failures: 0, Skips: 0 ===============================================
广告