2017-09-14 8 views
0

코드 : 우선 순위 태그가있는 @Test 메소드를 사용하는 프로그램."우선 순위"태그를 사용할 때 TESTNG 프로그램의 문제

package testng1; 
import static org.testng.Assert.assertEquals; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.ie.InternetExplorerDriver; 
import org.testng.Assert; 
import org.testng.annotations.Test; 
    @Test 
    public class testng { 
    public static WebDriver driver; 
    public void verifytitle() 
    { 
     System.setProperty("webdriver.ie.driver", "C:\\Users\\rprem\\Downloads\\IEDriverServer_x64_3.4.0\\IEDriverServer.exe"); 
     WebDriver driver = new InternetExplorerDriver(); 
     driver.navigate().to("https://google.com"); 
     String title = driver.getTitle(); 
     System.out.println(title); 
     Assert.assertEquals(title, "Google"); 
    } 
    @Test (priority = 1) 
    public void verifytitle2() 
    { 
    driver.get("https://gmail.com"); 
    String titlee = driver.getTitle(); 
    Assert.assertEquals(titlee, "Gmail - Free Storage and Email from Google"); 
    } 
} 

프로그램을 실행하면 "Java null pointer exception"문제가 발생합니다. 논리 방법에 따라 알파벳 순서로 실행됩니다. 우선 순위를 정하면 지정된 순서대로 실행됩니다. 그러나 그런 일은 일어나지 않습니다.

오류 메시지 :

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()이 방법에서 지역 변수에 InternetExplorerDriver 인스턴스를 할당하기 때문에이 클래스 수준의 WebDriver를 미행하고 verifytitle2() 시도가 액세스 할 때, 그것은 트리거, WebDriver driver = new InternetExplorerDriver();-driver = new InternetExplorerDriver();

을 변경하십시오에서

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

안녕하세요 Krishnan, 답변 해 주셔서 감사합니다. 하지만 여전히 작동하지 않았다, 여전히 null 포인터 예외가 발생했습니다. –

+0

@BruceWayne -'verifyTitle()'메소드에서'WebDriver' 인스턴스화가 일어나기 때문에 직접'verifytitle2()'를 시도 할 때'NullPointerException'이 보일 것입니다. 이것이 일어날 수 없도록 내 대답을 업데이트했습니다. –