2017-09-14 42 views
0

代碼:使用帶有優先級標籤的@Test方法編程。當我使用「優先級」標籤時TESTNG程序中的問題

​​

當我運行程序時,我得到了「Java空指針異常」問題。根據邏輯方法將按字母順序執行,當我把優先級,然後他們將按給定的順序運行。但事情並非如此。

錯誤消息:

Google 
PASSED: verifytitle 
FAILED: verifytitle2 
java.lang.NullPointerException 
    at testng1.testng.verifytitle2(testng.java:22) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:661) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 
    at org.testng.TestRunner.privateRun(TestRunner.java:744) 
    at org.testng.TestRunner.run(TestRunner.java:602) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 
    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:1301) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 
    at org.testng.TestNG.runSuites(TestNG.java:1144) 
    at org.testng.TestNG.run(TestNG.java:1115) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76) 


=============================================== 
    Default test 
    Tests run: 2, Failures: 1, Skips: 0 
=============================================== 


=============================================== 
Default suite 
Total tests run: 2, Failures: 1, Skips: 0 
=============================================== 

回答

1

問題就出在你的測試代碼。

在該方法中verifytitle()請更改WebDriver driver = new InternetExplorerDriver();driver = new InternetExplorerDriver();

既然你在這個方法分配InternetExplorerDriver實例的局部變量,它遮蔽了一流水平的webdriver,所以當verifytitle2()試圖訪問它,它會觸發a NullPointerException

爲了解決這個問題,我建議你將webdriver實例化邏輯解壓縮到@BeforeClass方法。

@BeforeClass() 
public void beforeClass() { 
    System.setProperty("webdriver.ie.driver", "C:\\Users\\rprem\\Downloads\\IEDriverServer_x64_3.4.0\\IEDriverServer.exe"); 
    driver = new InternetExplorerDriver(); 
} 
+0

嗨克里希南,謝謝你的回答。但它不起作用,仍然得到空指針異常。 –

+0

@BruceWayne - 如果您直接試圖運行'verifytitle2()',您會看到'NullPointerException',因爲'verifyDitle()'方法中發生'WebDriver'實例化。 我已更新我的答案,以確保不會發生這種情況 –