java 错误 org.testng.TestNGException:无法注入带有类 Ljava.lang.String 的 @Test 注释方法 main;
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/42636726/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Error org.testng.TestNGException: Cannot inject @Test annotated Method main with class Ljava.lang.String;
提问by CJ2K
I have created a testng.xml file to run a suite of my selenium webdriver test. From eclipse I can run this just fine as a testNG Suite, but from the command like I get the following error.
我创建了一个 testng.xml 文件来运行我的 selenium webdriver 测试套件。从 eclipse 中,我可以将它作为 testNG 套件运行得很好,但是从类似的命令中我得到以下错误。
testng.xml
测试文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "testng.org/testng-1.0.dtd">;
<suite name="CATS Regression Suite">
<test name="WEB UI">
<parameter name="uid" value="TestAccount"/>
<parameter name="pid" value="Test123"/>
<classes>
<class name="VerifyLogin"/>
</classes>
</test>
<!-- Test -->
</suite>
<!-- Suite -->
command ran:
命令运行:
java org.testng.TestNG testng.xml
Exception trace:
异常跟踪:
[Error] org.testng.TestNGException:
Cannot inject @Test annotated Method [main] with [class [Ljava.lang.String;].
For more information on native dependency injection please refer to http://testng.org/doc/documentation-main.html#native-dependency-injection
at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:244)
at org.testng.internal.Parameters.createParameters(Parameters.java:172)
at org.testng.internal.Parameters.createParameters(Parameters.java:458)
at org.testng.internal.Parameters.handleParameters(Parameters.java:568)
at org.testng.internal.Invoker.handleParameters(Invoker.java:1293)
at org.testng.internal.Invoker.createParameters(Invoker.java:1020)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1110)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:756)
at org.testng.TestRunner.run(TestRunner.java:610)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
at org.testng.TestNG.runSuites(TestNG.java:1133)
at org.testng.TestNG.run(TestNG.java:1104)
at org.testng.TestNG.privateMain(TestNG.java:1434)
at org.testng.TestNG.main(TestNG.java:1403)
Code (As shared in the comments)
代码(在评论中分享)
public class VerifyLogin extends TestBase {
@Parameters({"uid","pid"})
@Test
public void verifyLogin(String uid, String pid) throws IOException, Exception {
String userName = uid;
String passWord = pid;
// new instance
ExtentReports extent = new ExtentReports("C:\Users\AdvancedReport.html", true);
//starting test
ExtentTest test = extent.startTest("Login Test", "Regression");
// log step
test.log(LogStatus.PASS, "Browser Running");
TestBase login=new TestBase();
login.testLogin(userName, passWord);
}
}
回答by user8120115
Just remove String uid
, String pid
in main method and run once again as
只需在 main 方法中删除String uid
,String pid
并再次运行
public void verifyLogin(String uid, String pid)
to
到
public void verifyLogin()