如果在使用TestNG运行测试时,被测试代码中的System.out.println语句的输出不显示在TestNG的控制台输出中,可能是因为TestNG默认不显示System.out.println的输出。
要解决这个问题,可以使用TestNG提供的IReporter接口来自定义测试报告的输出。以下是一个示例代码:
首先,创建一个自定义的报告生成器类,实现IReporter接口:
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.xml.XmlSuite;
import java.util.List;
public class CustomReporter implements IReporter {
@Override
public void generateReport(List xmlSuites, List suites, String outputDirectory) {
for (ISuite suite : suites) {
// 获取suite中的所有测试类
Map suiteResults = suite.getResults();
for (ISuiteResult suiteResult : suiteResults.values()) {
ITestContext testContext = suiteResult.getTestContext();
// 获取测试类中的所有测试方法
IResultMap resultMap = testContext.getPassedTests();
for (ITestResult result : resultMap.getAllResults()) {
// 获取测试方法的输出日志
String[] outputLogs = result.getMethod().getOutput();
// 输出日志到控制台
for (String log : outputLogs) {
System.out.println(log);
}
}
}
}
}
}
然后,在测试类或测试套件的测试配置文件(testng.xml)中,使用reporter标签指定自定义报告生成器类:
...
通过以上步骤,当运行TestNG测试时,被测试代码中的System.out.println语句的输出将显示在TestNG的控制台输出中。