在这篇文章中,我们将学习如何在TestNG中生成测试报告。我们将使用ReportNG生成报告,因为它生成的报告比默认的TestNG报告更好。
我们将遵循一些简单的步骤来生成报告。
添加ReportNG依赖项
<!-- https://mvnrepository.com/artifact/org.uncommons/reportng -->
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
</dependency>
创建测试类
package Test;
import org.testng.Assert;
import org.testng.annotations.Test;
public class CodekruTest {
@Test
public void test() {
int a = 5;
int b = 6;
int c = 11;
Assert.assertTrue((a + b) == c);
}
}
添加报告程序日志
现在,添加Reporter.log(comment)和您希望在报告中看到的注释。我们还放置了一个日志,如下所示。
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
public class CodekruTest {
@Test
public void test() {
int a = 5;
int b = 6;
int c = 11;
Reporter.log("Executing the test"); // this will appear in our report
Assert.assertTrue((a + b) == c);
}
}
禁用默认TestNG侦听器
- 右键单击您的项目并选择Properties。
- 转到TestNG。
- 勾选Disable default listeners复选框。
- 然后单击应用并关闭。
生成testng.xml文件
我们必须在testng.xml文件中添加以下侦听器
org.uncommons.reportng.HTMLReporter
org.uncommons.reportng.JUnitXMLReporter
因此,我们的testng.xml文件如下所示
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="codekru">
<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener
class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>
<test name="codekruTest">
<classes>
<class name="Test.CodekruTest" />
</classes>
</test>
</suite>
现在,运行testng.xml文件,让我们看看是否生成了报告。
问题是,你会得到一个错误-
java.lang.NoClassDefFoundError: com/google/inject/Injector
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3325)
at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3350)
at java.base/java.lang.Class.getMethods(Class.java:1996)
at org.apache.velocity.util.introspection.ClassMap.getAccessibleMethods(ClassMap.java:258)
at org.apache.velocity.util.introspection.ClassMap.populateMethodCache(ClassMap.java:151)
at org.apache.velocity.util.introspection.ClassMap.<init>(ClassMap.java:64)
at org.apache.velocity.util.introspection.IntrospectorBase.createClassMap(IntrospectorBase.java:126)
at org.apache.velocity.util.introspection.IntrospectorBase.getMethod(IntrospectorBase.java:112)
at org.apache.velocity.util.introspection.Introspector.getMethod(Introspector.java:100)
at org.apache.velocity.runtime.parser.node.PropertyExecutor.discover(PropertyExecutor.java:65)
at org.apache.velocity.runtime.parser.node.PropertyExecutor.<init>(PropertyExecutor.java:39)
at org.apache.velocity.util.introspection.UberspectImpl.getPropertyGet(UberspectImpl.java:156)
at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:125)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175)
at org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:307)
at org.apache.velocity.runtime.parser.node.ASTNotNode.evaluate(ASTNotNode.java:45)
at org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:45)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:68)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:55)
at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:166)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:114)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)
我们需要再添加个依赖
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>4.2.0</version>
</dependency>
现在,让我们重新编译testng.xml,看看会发生什么。
我们的报告已经生成,但是在哪里生成?请刷新项目一次,您将在test-output html文件夹下看到一个index.html文件。
在浏览器中打开index.html文件,您将获得令人难以置信的报告。🙂
使用ReportNG制作彩色HTML报告。
你们都知道我们可以用ReportNG制作彩色报告,比如
- 以绿色颜色通过测试。
- 我们在红色的测试中失败了。
- 或者用橙子表示警告。
在代码中添加下面的属性。
System.setProperty("org.uncommons.reportng.escape-output", "false");
添加颜色使用HTML代码如下
String message = "<font color = 'green'>" + "Test is successfully executed" + "</font>";
Reporter.log(message);
完整代码
package Test;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
public class CodekruTest {
@Test
public void test() {
int a = 5;
int b = 6;
int c = 11;
System.setProperty("org.uncommons.reportng.escape-output", "false");
Reporter.log("Executing the test"); // this will appear in our report
Assert.assertTrue((a + b) == c);
String message = "<font color = 'green'>" + "Test is successfully executed" + "</font>";
Reporter.log(message); // this will also appear in our report but in green color
}
}
现在,运行我们之前创建的同一个testng.xml文件,您将在生成的报告中看到测试成功执行,显示为绿色。