【问题标题】:Selenium test can be started via maven only. Fails with NullPointer when starting using TestNG xml file (because system variable is 'null')Selenium 测试只能通过 maven 启动。开始使用 TestNG xml 文件时出现 NullPointer 失败(因为系统变量为“null”)
【发布时间】:2016-03-29 11:43:29
【问题描述】:

问题如下 - 如果我通过 maven(从命令提示符或 eclipse)启动我的自动测试,那么它们运行没有问题。如果我尝试通过 testng.xml(来自 eclipse)启动,那么我的测试会因 NullPointerException 而失败。基本上这里是我的 pom.xml 系统变量称为“browser

<properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <!-- Dependency versions -->
      <selenium.version>LATEST</selenium.version>
      <!-- Configurable variables -->
      <threads>3</threads>
      <browser>chrome</browser>
      <overwrite.binaries>false</overwrite.binaries>
   </properties>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
               <parallel>methods</parallel>
               <threadCount>${threads}</threadCount>
               <systemPropertyVariables>
               <browser>${browser}</browser>
                  <!--Set properties passed in by the driverbinary downloader-->
                  <webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver>
                  <webdriver.ie.driver>${webdriver.ie.driver}</webdriver.ie.driver>
                  <webdriver.opera.driver>${webdriver.opera.driver}</webdriver.opera.driver>
               </systemPropertyVariables>

这是我用来检索“browser”变量的代码:

private final String browser=System.getProperty("browser").toUpperCase();

因此,测试总是在上面的行中以 NullPointerException 停止执行。错误是:

FAILED: secondTest
java.lang.NullPointerException
    at DriverPackage.WebDriverThread.<init>(WebDriverThread.java:17)

顺便说一句,如果我按以下方式分配 browser 值(就像文本值一样):

private final String browser=("firefox").toUpperCase();

然后测试也通过 Testng.xml 运行。

=================

我的想法是,这与我的代码无关,而与方法有关。也许有些事情我不知道在TestNG的帮助下访问系统变量是什么?我还想提一下的是我正在使用 maven-failsafe-plugin 插件(你可以在 pom.xml 中看到它)。任何建议都非常感谢。

【问题讨论】:

    标签: java maven nullpointerexception system-properties maven-failsafe-plugin


    【解决方案1】:

    有几种方法可以解决这个问题。

    1. 使用运行配置运行。在 vm 参数中设置您在 pom 中设置的属性并指定您的套件文件。

    2. 在您的 xml 中,定义参数,您可以使用侦听器读取这些参数并设置可以在代码中引用的静态变量。

    3. 定义一个属性文件,如果 system.getProperty(browser) 为空,则读取属性文件并从那里获取数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 2013-12-27
      • 1970-01-01
      相关资源
      最近更新 更多