在TestNG上检索测试名称

2022-09-01 23:58:13

我可以像在JUnit中一样检索当前正在运行的测试名称(使用getName()规则)吗?

@Test
public void fooBar(){
     System.out.println(magic()); //should print "fooBar"
}

附言:我不想使用一些基于堆栈跟踪的自写工具。


答案 1

我用@BeforeMethod注释找到了更好的解决方案:

import java.lang.reflect.Method;

public class Test
{ 

    @BeforeMethod
    public void handleTestMethodName(Method method)
    {
        String testName = method.getName(); 
        ...
    }

    ...
}

(基于此线程的解决方案)


答案 2

当您使用TestNG时,您可以使用注释@BeforeTest

尝试在 testng 中设置测试.xml文件测试标记:name

<test name="Check name test" >

并使用此 metod:

@BeforeTest
public void startTest(final ITestContext testContext) {
    System.out.println(testContext.getName()); // it prints "Check name test"
}

推荐