【问题标题】:Running TestNG tests in Maven fails because teardown method在 Maven 中运行 TestNG 测试失败,因为拆解方法
【发布时间】:2014-08-05 06:35:57
【问题描述】:

我在 Maven 上运行我的 testNG 测试时遇到了一个问题,问题是我认为我的测试既不是并行执行的,也不是按正确的顺序执行的,我这样说是因为每次我执行调用 mvn test 到使用我的测试我得到了错误:

Running com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.TestLanzadorIdealistaTestNG
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@4ba33d48
Tests run: 3, Failures: 1, Errors: 0, Skipped: 2, Time elapsed: 0.484 sec <<< FAILURE!
tearDown(com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.TestLanzadorIdealistaTestNG)  Time elapsed: 0.348 sec  <<< FAILURE!
java.lang.NullPointerException
    at com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.TestLanzadorIdealistaTestNG.tearDown(TestLanzadorIdealistaTestNG.java:118)

显然是在测试我的测试类之前尝试执行 @AfterClass 方法,这就是为什么我得到一个 NULL 异常。

public class TestLanzadorIdealistaTestNG {

    private RemoteWebDriver driver;
    @Parameters({ "browser","platformBrowser","versionBrowser","URL_NODE_HUB" })

    @Test
    public void generoDriver(String browser, String platformBrowser,String versionBrowser,String URL_NODE_HUB) throws InterruptedException, MalformedURLException{

        DesiredCapabilities cap = null;
        Platform plataform = null;


        /**
         * - INICIO - Controlamos la plataforma en la que se va a lanzar el test
         */

        if (platformBrowser.equals("MAC")){
            plataform = Platform.MAC;
        }

        if (platformBrowser.equals("WINDOWS"))
        {
            plataform  = Platform.WINDOWS;
        }

        if (platformBrowser.equals("LINUX")){
            plataform = Platform.LINUX;
        }

        if (platformBrowser.equals("")) // caso por defecto
        {
            plataform = Platform.ANY;
        }
        /**
         * -FIN- Controlamos la plataforma en la que se va a lanzar el test
         */


        /**
         * - INICIO - logica para lanzar segun version del navegador
         */

        if (browser.equals("firefox"))
        {
            cap = DesiredCapabilities.firefox();
            cap.setPlatform(plataform);
            cap.setBrowserName(browser);
            cap.setVersion(versionBrowser);
        }else if (browser.equals("chrome")) {
            cap = DesiredCapabilities.chrome();
            cap.setPlatform(plataform);
            cap.setBrowserName(browser);
            cap.setVersion(versionBrowser);
        } else if(browser.equals("internet explorer")){
            cap = DesiredCapabilities.internetExplorer();
            cap.setPlatform(plataform);
            cap.setBrowserName(browser);
            cap.setVersion(versionBrowser);
        } else if (browser.equals("safari")){
            cap = DesiredCapabilities.safari();
            cap.setPlatform(plataform);
            cap.setBrowserName(browser);
            /**
             * - INICIO - Controlamos el caso en que no pusimos version de navegador alguna
             */

            if (versionBrowser.equals("")){
                cap.setVersion("");
            }
            else
            {
                cap.setVersion(versionBrowser);
            }
            /**
             * - FIN - Controlamos el caso en que no pusimos version de navegador alguna
             */

        } 

        /**
         * - FIN - logica para lanzar segun version del navegador
         */
        cap.setJavascriptEnabled(true); 
        driver = new RemoteWebDriver(new URL(URL_NODE_HUB), cap);

    }

/**
 * Test en el cual vamos a chequear que al seleccionar comprar como tipo de operacion
 * habitacion y vacacional es desactivado y no posible de seleccionar en el area 
 * @throws InterruptedException
 * @throws MalformedURLException
 */

@Test (dependsOnMethods={"generoDriver"})
    public void ComprarDeactivateHabitacionVacacional() throws InterruptedException, MalformedURLException{
        com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.ManejadorPrograma manejador = new com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.ManejadorPrograma(driver);
        manejador.logicaPrograma();

}

@AfterTest
public void tearDown(){
        driver.quit();
}

这是我的 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>EjemploSeleniumGridMavenTestNG</groupId>
  <artifactId>EjemploSeleniumGridMavenTestNG</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>

      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>2.42.2</version>
      </dependency>

      <dependency>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.8.8</version>
      </dependency>

      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.8.1</version>
      </dependency>

  </dependencies>

</project>
<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
            <trimStackTrace>false</trimStackTrace>
          <suiteXmlFiles>
            <suiteXmlFile>src/test/resources/test-properties.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
      </plugin>
</plugins>

这是我的 test-properties.xml

<suite name="Suite" parallel="tests" verbose="3" thread-count="3">

  <test name="Lanzador test Idealista TestNG without parallel (firefox)">
    <parameter name="browser" value="firefox" />
    <parameter name="platformBrowser" value="MAC" />
    <parameter name="versionBrowser" value="31.0" />
    <parameter name="URL_NODE_HUB" value="http://localhost:4444/wd/hub"/>
    <classes>
      <class name="com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.TestLanzadorIdealistaTestNG"/>
    </classes>
  </test> <!-- Test -->

    <test name="Lanzador test Idealista TestNG without parallel (safari)">
    <parameter name="browser" value="safari" />
    <parameter name="platformBrowser" value="MAC" />
    <parameter name="versionBrowser" value="" />
    <parameter name="URL_NODE_HUB" value="http://localhost:4444/wd/hub"/>
    <classes>
      <class name="com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.TestLanzadorIdealistaTestNG"/>
    </classes>
  </test> <!-- Test -->

  <test name="Lanzador test Idealista TestNG without parallel (chrome)">
    <parameter name="browser" value="chrome" />
    <parameter name="platformBrowser" value="MAC" />
    <parameter name="versionBrowser" value="" />
    <parameter name="URL_NODE_HUB" value="http://localhost:4444/wd/hub"/>
    <classes>
      <class name="com.pruebas.seleniumGridTestNG.dataDrivenParallelXML.TestLanzadorIdealistaTestNG"/>
    </classes>
  </test> <!-- Test -->

</suite> <!-- Suite -->

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java maven selenium-webdriver testng


    【解决方案1】:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>groupidhere</groupId>
      <artifactId>artifactidhere</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>artifactidhere</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <build>
        <plugins>
        <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
               <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.2</version>
            <configuration>                        
              <suiteXmlFiles>
                   <suiteXmlFile>src/test/resources/test-properties.xml</suiteXmlFile>              
              </suiteXmlFiles>
              <testFailureIgnore>true</testFailureIgnore>         
            </configuration>       
          </plugin>   
        </plugins>
      </build>
      <reporting>
         <plugins>
             <!-- TestNG-xslt configuracion -->
             <plugin>
                 <groupId>org.reportyng</groupId>
                 <artifactId>reporty-ng</artifactId>
                 <version>1.2</version>
                 <configuration>
                     <!-- Directorio de salida para los reportes en xslt de testng -->
                     <outputdir>/target/testng-xslt-report</outputdir>
                     <sorttestcaselinks>true</sorttestcaselinks>
                     <testdetailsfilter>FAIL,SKIP,PASS,CONF,BY_CLASS</testdetailsfilter>
                     <showruntimetotals>true</showruntimetotals>
                 </configuration>
             </plugin>
         </plugins> 
      </reporting>
    
    
      <dependencies>           
        <dependency>
        <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.8.1</version>
        </dependency>           
        <dependency>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.8</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-server</artifactId>
          <version>2.42.2</version>
        </dependency>
        <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>2.42.2</version>
          </dependency>       
      </dependencies>
    
      <pluginRepositories>
        <pluginRepository>
          <id>reporty-ng</id>
          <url>https://github.com/cosminaru/reporty-ng/raw/master/dist/maven</url>
        </pluginRepository>
      </pluginRepositories>
    
    </project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2015-06-27
      • 1970-01-01
      • 2011-08-04
      • 2017-01-09
      • 1970-01-01
      相关资源
      最近更新 更多