【发布时间】:2019-06-28 04:14:49
【问题描述】:
如何覆盖出现在 TestNG 报告中的测试名称?我想覆盖出现在中间列的名称(当前显示为方法名称)。 这可能吗?
我试着这样做,但没有成功。
public class EchApiTest1 extends TestBase {
...
@BeforeTest
public void setUp() {
restClient = new RestClientPost();
this.setTestName( "ech: XXXXXX" );
}
还有,基类:
import org.testng.ITest;
public class TestBase implements ITest {
String testName = "";
@Override
public String getTestName() {
return this.testName;
}
public void setTestName( String name ) {
this.testName = name;
}
}
注意:当我在 Jenkins TestNG 插件报告中查看报告详细信息时,上述代码确实有效,该报告在 Reporter 日志输出的开头将覆盖的测试名称显示为名为“Instance Name:”的字符串.在这种情况下,为什么“setTestName()”方法会更改报告中标记为“Instance Name”的字符串?
我找到的一个答案有这样的建议,但我不知道如何将 ITestResult arg 传递给 AfterMethod 方法:
@AfterMethod
public void setResultTestName( ITestResult result ) {
try {
BaseTestMethod bm = (BaseTestMethod)result.getMethod();
Field f = bm.getClass().getSuperclass().getDeclaredField("m_methodName");
f.setAccessible(true);
f.set( bm, bm.getMethodName() + "." + your_customized_name );
} catch ( Exception ex ) {
Reporter.log( "ex" + ex.getMessage() );
}
想法?
【问题讨论】:
标签: unit-testing testng