testng - 获取包含失败测试的 class 的名称

testng - Get name of the class that contains failed test

<test name="Test">
   <classes>
     <class name="io.test.FirstTest"/>
   </classes>
</test>

我想获取 FirsTest class 的名称而不包含 onTestFailure 中的包名称。换句话说,我需要得到 FirstTest,而不是 io.test.FirstTest。怎么做?

   public class TestListener extends TestListenerAdapter {

    @Override
    public void onTestFailure(ITestResult testResult) {

    }
  }

我用过testResult.getInstanceName(),但是returnsio.test.FirstTest。因此,我使用了 string.substring():

   final String name = testResult.getInstanceName();
   final String result = name.substring(navn.lastIndexOf(".") + 1).trim();

但是有更好的解决办法吗?

试试这个方法:

package click.webelement.testng;

import org.testng.Assert;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners({TListenerTest.class})
public class TListenerTest implements ITestListener {

    @Test
    public void toFail(){
        Assert.assertTrue(false);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        System.out.println(result.getInstance().getClass().getSimpleName());
        System.out.println(result.getTestClass().getClass().getSimpleName());
    }
}

不过我不会依赖"simple names"。它们看起来不错,除非你 运行 迟早会被骗(因为你无法区分 类 具有相同的名称但来自不同的包)。