问题陈述我想通过@before test中的@test来获取被标记为测试方法的方法名。
经过研究,我找到了一个解决方案& 以下是我的实现。
import java.lang.reflect.Method;
import org.testng.annotations.*;
public class myTestClass {
@BeforeSuite
public void configureEnvironment(){
// does some basic tasks
}
@BeforeTest
public void configureTest(Method m){
System.out.println("Test Case Name : "+m.getName());
}
@Test
public void TestABC(){}
@Test
public void TestXYZ(){}
@AfterTest
public void testCleanUp(){
//performs test clean up activities
}
}
PS: 这是一段打字的代码,目的是为了解释& 因此请忽略任何语法错误。
我希望得到以下结果 产量 ::
Test Case Name : TestABC
Test Case Name : TestXYZ
* 以下是我的 测试xml ::
<?xml version="1.0" encoding="UTF-8"?>
<suite name="My_Test_Suite" parallel="false">
<test name="My_TESTS">
<classes>
<class name="myPackage.myTestClass" />
</classes>
</test>
</suite>
然而,我得到了以下信息 例外 ::
FAILED CONFIGURATION: @BeforeTest configureTest
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.TestRunner.beforeRun(TestRunner.java:647)
at org.testng.TestRunner.run(TestRunner.java:615)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
at org.testng.TestNG.run(TestNG.java:1018)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)
* 根据TestNG文件,这是一种本地依赖性注入,信息由testng或dataprovider注入。由于我想使用testng的方法,我已经实现了上述解决方案。
谁能提供他们的意见,我在这里遗漏了什么&;如果有任何不正确的实现。
PS:我看到了很多重复的问题,但是没有人报告这个异常&因此决定把这个问题归档。
你配错了 @BeforeTest
和 @BeforeMethod
. 从 文件:
@BeforeTest。注释的方法将在属于<test> 标签内的类的任何测试方法运行之前运行。
@BeforeMethod: 注解的方法将在每个测试方法之前运行。 注解的方法将在每个测试方法之前运行。
你想要的是
@BeforeMethod
public void configureTest(Method m){
System.out.println("Test Case Name : "+m.getName());
}