问题陈述 我想获得在@before测试中使用@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
以下是我的 testng 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方法,我已经实现了上述解决方案。
任何人都可以提供他们的意见,我在这里错过了什么&amp;如果有任何不正确的实施。
PS:我看过许多重复的问题,但没有人报告此异常&amp;因此决定提出这个问题。
答案 0 :(得分:0)
您错过了@BeforeTest
和@BeforeMethod
。来自the documentation:
@BeforeTest:带注释的方法将在任何测试方法之前运行 属于&lt; test&gt;内的类标签运行。
@BeforeMethod: 带注释的方法将在每个测试方法之前运行。
你想要的是:
@BeforeMethod
public void configureTest(Method m){
System.out.println("Test Case Name : "+m.getName());
}