如何获取在testng拆卸方法中运行的测试方法的名称?

Zee*_*cer 30 java testng unit-testing

基本上,我有一个拆解方法,我想要登录到刚刚运行测试的控制台.如何获得该字符串?

我可以获取类名,但我想要刚刚执行的实际方法.

public class TestSomething {

    @AfterMethod
    public void tearDown() {
        System.out.println("The test that just ran was: " + getTestThatJustRanMethodName());
    }

    @Test
    public void testCase() {
       assertTrue(1 == 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

...应该输出到屏幕:"刚刚运行的测试是:testCase"

但是,我不知道getTestThatJustRanMethodName应该具有的魔力.

Ced*_*ust 43

在@AfterMethod中声明一个ITestResult类型的参数,TestNG会注入它:

@AfterMethod
public void afterMethod(ITestResult result) {
  System.out.println("method name:" + result.getMethod().getMethodName());
}
Run Code Online (Sandbox Code Playgroud)


Jac*_*ekM 27

如果要执行测试之前获取方法名称,可以使用以下命令:

import java.lang.reflect.Method;

@BeforeMethod
public void nameBefore(Method method)
{
    System.out.println("Test name: " + method.getName());       
}
Run Code Online (Sandbox Code Playgroud)


Ren*_*ink 6

只需声明一个java.lang.reflect.Method参数即可。

 @BeforeMethod
 public void beforeTestMethod(Method testMethod){
    System.out.println("Before Testmethod: " + testMethod.getName());       
 }
Run Code Online (Sandbox Code Playgroud)

但是TestNG允许您注入更多;)

  • 任何@Before方法或@Test方法都可以声明类型的参数ITestContext
  • 任何@AfterMethod方法都可以声明type参数ITestResult,该参数将反映刚刚运行的测试方法的结果。
  • 任何@Before@After方法都可以声明类型为type的参数XmlTest,其中包含当前标记。
  • 任何@BeforeMethod(和@AfterMethod)都可以声明类型的参数java.lang.reflect.Method。此参数将接收此@BeforeMethod完成之后(或在为@AfterMethod运行的方法之后)将调用的测试方法。
  • 任何@BeforeMethod都可以声明类型的参数Object[]。此参数将接收即将馈入即将到来的测试方法的参数列表,该列表可以由TestNG注入,例如java.lang.reflect.Method或来自@DataProvider
  • 任何@DataProvider都可以声明类型为ITestContext或的参数java.lang.reflect.Method。后一个参数将接收将要调用的测试方法。