在TestNG中使用@BeforeMethod时,有没有办法获得方法元数据?
2022-09-02 03:33:27
我正在使用TestNG并有一套测试。我想在每个测试方法之前执行一个操作,该操作需要有关该方法的信息。举个简单的例子,假设我想在执行方法之前打印方法的名称。我可以写一个用.如何将参数注入到该方法中?@BeforeMethod
我正在使用TestNG并有一套测试。我想在每个测试方法之前执行一个操作,该操作需要有关该方法的信息。举个简单的例子,假设我想在执行方法之前打印方法的名称。我可以写一个用.如何将参数注入到该方法中?@BeforeMethod
请查看文档中的依赖关系注入部分。它指出,例如,在这种情况下可以使用依赖注入:
任何 (and) 都可以声明 类型的参数。此参数将接收测试方法,该方法将在完成时调用(或在方法运行为 )
@BeforeMethod
@AfterMethod
java.lang.reflect.Method
@BeforeMethod
@AfterMethod
因此,基本上,您只需要在中声明一个类型的参数,您就可以访问以下测试名称的名称。像这样:java.lang.reflect.Method
@BeforeMethod
@BeforeMethod
protected void startTest(Method method) throws Exception {
String testName = method.getName();
System.out.println("Executing test: " + testName);
}
还有一种方法可以使用界面(文档),但是由于我不完全确定如何使用它,如果您有兴趣,我会让你看看它。ITestNGMethod
下面的示例演示如何在使用数据提供程序时获取参数,在@BeforeMethod中使用 Object[] 数组。
public class TestClass {
@BeforeMethod
public void beforemethod(Method method, Object[] params){
String classname = getClass().getSimpleName();
String methodName = method.getName();
String paramsList = Arrays.asList(params).toString();
}
@Test(dataProvider = "name", dataProviderClass = DataProvider.class)
public void exampleTest(){...}
}
public class DataProvider {
@DataProvider(name = "name")
public static Object[][] name() {
return new Object[][]{
{"param1", "param2"},
{"param1", "param2"}
};
}
}