問題語句 我想獲取使用@test標記爲測試方法的方法的名稱在@before測試中。java.lang.IllegalArgumentException在獲取標記爲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
以下是我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方法,所以我實現了上述解決方案。
任何人都可以請他們提供他們的意見,如果有什麼不正確的實施,我在這裏丟失了什麼&。
PS:我看到很多重複的問題,但沒有人報告過這個異常&因此決定提出這個問題。
你確定@BeforeTest方法接受一個參數? IIRC,所有TestNG註釋的方法不會採取任何參數 – Ayman
是的,這是我的不好,我以前給你的BeforeMethod正如下面的答案中指出的那樣。無論如何,謝謝@Ayman。 – palkarrohan