【问题标题】:NPE error when running TestNg test groups using eclipse使用 eclipse 运行 TestNg 测试组时出现 NPE 错误
【发布时间】:2015-11-30 00:18:08
【问题描述】:

我正在尝试通过右键单击作为测试套件的 TestNG.xml 在 TestNG 中运行测试组,然后出现错误。

java.lang.NullPointerException
at execution_Engine.TestCase1_Login.Login(TestCase1_Login.java:54)

注意:当我自己运行测试(而不是作为测试套件)时,它运行良好。

谁能指出问题所在?和解决这个问题。

TestNG.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke tests">
<test name="regressions Test Suite">
    <groups> 
        <run> 
            <include name="Regression"/> 
        </run> 
    </groups> 
    <classes> 
        <class name="execution_Engine.TestCase1_Login"/> 
        <class name="execution_Engine.TestCase2_InvalidLogin"/>
    </classes>
            <packages>
        <package name="execution_Engine" />
        </packages> 
</test>
</suite>

@SuppressWarnings("unused")
public class TestCase1_Login  {

public static WebDriver driver = null;

 @BeforeMethod
  public static void LaunchIEandNavigate() {  

      /*** Launch IE **/ 
    System.setProperty "webdriver.ie.driver", "C:\\IE\\IEDriverServer.exe");
      driver = new InternetExplorerDriver();

      /*** implicit Wait **/
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

      /*** Navigate to URL **/
      driver.get("http://google.com");



@Test(enabled = true, groups = "Regression")
public void Login() {

       /*** Login Action  **/
       driver.findElement(By.id("UserId")).sendKeys("DummyUser"); Line 54
       driver.findElement(By.id("Password")).sendKeys("password");
       driver.findElement(By.id("Submit-button")).click();

   System.out.println("Testcase1 - ValidLogin executed sucessfully.");

}

@AfterMethod
public void CloseIEandQuit() {
//driver.switchTo().defaultContent();   
  /** Close and quit browser*/
  driver.close();
  driver.quit();

}

【问题讨论】:

  • 您没有在配置方法上指定组。另一种选择是设置 alwaysRun=true。
  • @juherr - 感谢您的帮助。我更新了配置方法中的组,还尝试了 alwaysRun=true 选项,它们都对我有用。

标签: nullpointerexception testng


【解决方案1】:

只需将 (alwaysRun = true) 添加到 @BeforeMethod 注释。

【讨论】:

  • OMG 我在@BeforeTest 遇到了同样的错误,这解决了它。谢谢
  • 是的,将 alwaysRun=true 添加到 BeforeTest 解决了问题。
  • 也将 'alwaysRun' =true 添加到 @AfterMethod。上述解决方案对我有用,但它停止执行 AfterMethod,所以在我添加“alwaysRun”后,它开始正常工作。
  • 如何在网上亲吻某人:P lol.. 它对我有很大帮助
【解决方案2】:

问题:

如何在 POM 中通过 Extends Reporting 使用分组概念时解决 NULLPOINTEREXCEPTION

解决方案:

  1. 将以下参数用于我们正在使用的所有配置注释,即在基础测试中; (alwaysRun = true)
  2. 在页面类中使用有效的 try catch 块,不要使用 throws [不正确的异常]
  3. 使用参数化值,而不是在页面或脚本中采用硬编码值。

【讨论】:

    【解决方案3】:

    要添加到上述答案,请将 (alwaysRun=true) 添加到您正在使用的所有注释中。我有注释@BeforeClass 和@BeforeMethod。因此,将 (alwaysRun=true) 添加到构成测试一部分的所有注释中。

      @Parameters("browser")
      @BeforeClass(alwaysRun=true)
      public void setupDriver(String browser) 
      {
          application=new SSC_NewUserRegisteration(browser);
    
      }
    
      @BeforeMethod(alwaysRun=true)
      public void launchApplication() 
      {
          application.app_launchApplication();
      }
    
    
      @Test(priority=1, groups = {"Valid Data"})
      public void submitWithAadharDetails() 
      {
          application.app_setTestData(1);
    
          application.app_fillNewUserRegisterationDetails();
    
          application.app_submitData();
      }
    

    【讨论】:

      【解决方案4】:

      根本原因是您必须在 before 方法中或在 class 或 alwaysRun 之前添加组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-31
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 2017-09-19
        • 2016-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多