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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 06:47:10  来源:igfitidea点击:

Error org.testng.TestNGException: Cannot inject @Test annotated Method main with class Ljava.lang.String;

javatestngtestng-eclipse

提问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 pidin main method and run once again as

只需在 main 方法中删除String uid,String pid并再次运行

public void verifyLogin(String uid, String pid)

to

public void verifyLogin()