2017-03-06 320 views
1

我創建了一個testng.xml文件來運行一套我的selenium webdriver測試。從eclipse中,我可以像testNG Suite一樣運行這個功能,但是從命令中可以看到以下錯誤。錯誤org.testng.TestNGException:無法注入@Test註釋方法main與類Ljava.lang.String;

的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 --> 

命令運行:

java org.testng.TestNG testng.xml 

異常跡:

[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) 

代碼(如圖中的評論共享)

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); 
    } 
} 
+0

是什麼測試方法的簽名是什麼樣子?它看起來像期待一個字符串,而沒有得到它。 – mrfreester

+0

<?xml version =「1.0」encoding =「UTF-8」?> <!DOCTYPE suite SYSTEM「http://testng.org/testng-1.0.dtd」> <測試名稱= 「WEB UI」> <參數名稱= 「UID」 值= 「TestAccount」/> \t <參數名稱= 「PID」 值= 「Test123」/> \t \t <類名= 「VerifyLogin」/> < - > – CJ2K

+0

您沒有使用命令行和蝕之間的相同TestNG的版本! - 套件。覈實。 – juherr

回答

1

只是刪除String uidString pid的主要方法和

public void verifyLogin(String uid, String pid) 

再次運行到

public void verifyLogin()