idea+java+testng,使用xml执行完用例,控制台左侧,只有一个套件名称,没有其他的东西,但用例确实是执行完成了,右侧有执行的case,如果用例执行失败,左侧能显示失败的用例
2条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题描述: 在使用idea+java+testng执行用例时,使用xml文件来执行完用例后,左侧控制台只有一个套件名称,没有其他的信息显示。但用例确实是执行完成了,右侧有执行的case。如果用例执行失败,左侧能够显示失败的用例。 解决方案: 1.配置testng.xml文件 在使用testng执行用例时,需要配置testng.xml文件,将需要执行的测试类或测试包添加到suites标签中。例如:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="TestSuiteName" verbose="1"> <test name="TestCaseName"> <classes> <class name="com.example.testcase.TestClass1" /> <class name="com.example.testcase.TestClass2" /> </classes> </test> </suite>2.使用testng.xml文件执行用例 在idea中,使用testng.xml文件执行用例,需要进行如下设置: - 点击Run选项卡,选择Edit Configurations。 - 在左侧菜单中选择TestNG。 - 在右侧配置页面中,选择testng.xml文件。 - 点击Apply,然后点击OK。 执行用例时,控制台左侧只有一个套件名称,没有其他的信息显示。但是右侧有执行的case,并且在执行用例过程中会一直输出执行日志。 3.添加Listener 使用testng执行用例时,可以添加Listener来监听用例执行时的各种事件,例如用例执行成功、失败、跳过等。在Listener中可以添加对应的操作,例如输出日志、截图等。 在idea中,添加Listener的方式如下: - 在testng.xml文件中添加Listener的全类名。例如:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="TestSuiteName" verbose="1"> <listeners> <listener class-name="com.example.listener.TestListener" /> </listeners> <test name="TestCaseName"> <classes> <class name="com.example.testcase.TestClass1" /> <class name="com.example.testcase.TestClass2" /> </classes> </test> </suite>- 创建Listener类,并实现对应的接口。例如:
public class TestListener implements ITestListener { @Override public void onTestStart(ITestResult result) { //用例执行开始时的操作 } @Override public void onTestSuccess(ITestResult result) { //用例执行成功时的操作 } @Override public void onTestFailure(ITestResult result) { //用例执行失败时的操作 } @Override public void onTestSkipped(ITestResult result) { //用例跳过时的操作 } }通过添加Listener,并在Listener中实现对应的操作,可以在控制台左侧输出更详细的用例执行信息,例如用例执行失败的原因等。 示例代码: testng.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="TestSuiteName" verbose="1"> <listeners> <listener class-name="com.example.listener.TestListener" /> </listeners> <test name="TestCaseName"> <classes> <class name="com.example.testcase.TestClass1" /> <class name="com.example.testcase.TestClass2" /> </classes> </test> </suite>TestListener类:
public class TestListener implements ITestListener { @Override public void onTestStart(ITestResult result) { log("Test Start: " + result.getMethod().getMethodName()); } @Override public void onTestSuccess(ITestResult result) { log("Test Success: " + result.getMethod().getMethodName()); } @Override public void onTestFailure(ITestResult result) { log("Test Failure: " + result.getMethod().getMethodName() + ", Cause: " + result.getThrowable().getMessage()); } @Override public void onTestSkipped(ITestResult result) { log("Test Skipped: " + result.getMethod().getMethodName() + ", Reason: " + result.getThrowable().getMessage()); } /** * 打印日志 */ private void log(String message) { System.out.println("[TestNG] " + message); } }解决 无用评论 打赏 举报