Estoy ejecutando varias pruebas automatizadas de selenio con Maven. Cuando estoy depurando en Eclipse, normalmente hago clic derecho en testing.xml y Ejecutar como> TestNG Suite. Pero la ejecución en Jenkins debe ejecutarse con mvn test. Pero cuando ejecuto eso, obtengo varios errores:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project ecom: Compilation failure: Compilation failure:
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[15,43] package com.company.automation.ecom.pages does not exist
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[16,43] package com.company.automation.ecom.pages does not exist
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[110,13] cannot find symbol
[ERROR] symbol:   class Header
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[110,62] cannot find symbol
[ERROR] symbol:   class Header
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[113,9] cannot find symbol
[ERROR] symbol:   class SignIn
[ERROR] location: class com.company.automation.ecom.HelperMethods
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[113,58] cannot find symbol
[ERROR] symbol:   class SignIn
[ERROR] location: class com.company.automation.ecom.HelperMethods

Sé que los archivos están presentes, cuando ejecuto como TestNG suite todo funciona sin problemas. Además, cuando ejecuto el java -version obtengo esto:

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Sé que es un problema de configuración en alguna parte, pero no sé lo suficiente sobre la configuración de maven / java para resolverlo. Los archivos que Maven me dice que se han ido son mis archivos y están absolutamente presentes. Aquí está mi archivo 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>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>com.kirklands.automation.ecom.retry.MyTestListenerAdapter</value>
                        </property>
                    </properties>
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <groupId>com.kirklands.automation</groupId>
    <artifactId>ecom</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>ecom</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.0.1</version>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>1.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
</project>

Estructura del proyecto:

src/main/java
    {package com.company.automation.ecom}
        CreditCard.java
        HelperMethods.java
src/test/java
    {package com.company.automation.ecom.pages}
        Header.java
        SignIn.Java
        (etc...)
    {package com.company.automation.ecom.tests}
        HeaderTests.java
        (etc...)
9
kroe761 5 abr. 2017 a las 22:31

2 respuestas

La mejor respuesta

Parece que su problema aparece debido a que intenta acceder desde:

src / main / java

Fuentes de prueba, que se encuentran:

src / prueba / java

Aquí está el fragmento exacto del registro que publicó:

/Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[15,43] package com.company.automation.ecom.pages no existe

Funcionará desde otro lado: si usará sus fuentes (src/main/java) del alcance de la prueba (src/test/java).

Maven tiene su propio lifecycle.

Tiene una consecuencia estricta :

  • compile: compila el código fuente del proyecto
  • test: prueba el código fuente compilado utilizando un marco de prueba de unidad adecuado. Estas pruebas no deberían requerir que el código se empaquete o implemente

Y durante compile solo puede compilar sus fuentes. Sin embargo, depende de sus pruebas (paquete de páginas), que no se pueden compilar en este momento, porque solo se compilará en la fase test.
Por lo tanto, la compilación falla .

Para resolver, intente cambiar la estructura de su proyecto, un poco:

src/main/java
    {package com.company.automation.ecom}
        CreditCard.java
        HelperMethods.java
    {package com.company.automation.ecom.pages}
        Header.java
        SignIn.Java
        (etc...)
src/test/java
    {package com.company.automation.ecom.tests}
        HeaderTests.java

Y sus pruebas deben usar fuentes (núcleo y páginas) sin ningún problema.

14
nazar_art 5 abr. 2018 a las 05:23

Primero debe ejecutar el comando maven clean install.

Ese comando compilará su paquete missing e incluso ejecutará las pruebas.

ACTUALIZACIÓN: debe cambiar su paquete com.company.automation.ecom.pages a su carpeta src/main/java. para que pueda compilarse en la fase maven compile.

3
alayor 5 abr. 2017 a las 20:34