Travis CI build failing with JUnit 5

novayhulk14 :

I'm currently working on a Java project using Maven, GitHub, CodeCov and Travis and I have a problem with my tests. I'm using JUnit 5 for the tests and here's the pom.xml fragment of the dependencies:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.4.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.4.2</version>
    <scope>test</scope>
</dependency>

I don't create any tests yet, I only have a empty test class with a method that does nothing but has the @Test tag. Here's the class:

package test.java.test;

import org.junit.jupiter.api.Test;

public class MainTests {

    @Test
    public void sampleTest() {
        // TODO
    }
}

And here's my travis.yml file on my project:

language: java
after_success:
  - bash <(curl -s https://codecov.io/bash)
script: 
  - "mvn test"

Running "mvn test" in my local machine doesn't provide any errors but my Travis build is failing because of this:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/travis/build/M1RZ4/TFG/src/test/java/test/MainTests.java:[3,29] package org.junit.jupiter.api does not exist
[ERROR] /home/travis/build/M1RZ4/TFG/src/test/java/test/MainTests.java:[7,10] cannot find symbol
  symbol:   class Test
  location: class test.java.test.MainTests

I'm not used to work with Travis so I don't know what I'm doing wrong.

EDIT: Added full pom.xml file

<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>TFG</groupId>
    <artifactId>TFG</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                    <artifactId>cobertura-maven-plugin</artifactId>
                    <version>2.7</version>
                    <configuration>
                    <formats>
                        <format>html</format>
                        <format>xml</format>
                    </formats>
                    <check />
                    </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
    <dependency>
        <groupId>org.jfree</groupId>
        <artifactId>jfreechart</artifactId>
        <version>1.0.19</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.0.6</version>
    </dependency>
    <dependency>
        <groupId>com.gestor</groupId>
        <artifactId>GestorProblema1maquina</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/GestorProblema1maquina.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.4.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.4.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.0</version>
    </dependency>
    </dependencies>
</project>
Lesiak :

I believe that the culprit is the mess in packaging. As specified in: http://maven.apache.org/ref/3.3.3//maven-model/maven.html#class_build the build section of the pom.xml has a sourceDirectory entry to specify the source folder and testSourceDirectory to specify test source folder.

The output of the compilation shows that your tests are placed in the source folder, hence they are compiled with dependencies with compile scope, not test scope.

To fix:

  • source and test source folders must not overlap.
  • use conventional directory layout if possible (most likely it is possible), and remove the customisation from pom

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=155721&siteId=1