Maven - keine Durchführung von Tests

Hein_nieH

Bekanntes Mitglied
Hallo,

ich suche nun schon seit Stunden nach der Ursache für folgendes Problem.
Ich habe ein Programm (Maven- , welches auch Testfälle enthält.
In Eclipse kann ich die Tests auch ohne Probleme direkt durchführen (run - JUnit).

Sofern ich jedoch das MavenScript starte werden keine Tests durchgeführt.😬
hier habe ich schon alles erdenkliche versucht und bin zu keiner Lösung gekommen.
Kann jemand mir einen Tip geben, um die Ursache zu finden. 🙄

In der Anlage habe ich ein paar Screenshots vom Projekt erstellt.

Gruss Hein_nieH

Hier die pom.xml
XML:
<project xmlns="[URL]http://maven.apache.org/POM/4.0.0[/URL]" xmlns:xsi="[URL]http://www.w3.org/2001/XMLSchema-instance[/URL]" xsi:schemaLocation="[URL]http://maven.apache.org/POM/4.0.0[/URL] [URL]http://maven.apache.org/xsd/maven-4.0.0.xsd[/URL]">
  <modelVersion>4.0.0</modelVersion>
  <groupId>VPN_Rebuild</groupId>
  <artifactId>VPN_Rebuild</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>VPN_Rebuild name</name>
  <description>VPN_Rebuild descr</description>

  <properties>
        <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding>
        <project.reporting.outputEncoding>Cp1252</project.reporting.outputEncoding>
        <java.version>8</java.version>
   </properties>
 
   <!-- Anpassung des Standard-Build-Prozesses -->
    <build>
        <!-- Festlegen ressourcen -->
        <resources>
              <resource>
                <directory>src</directory>
                <includes></includes>
                <excludes>
                      <exclude>**/*.java</exclude>
                </excludes>
              </resource>
        </resources>
  
        <!-- Anpassung des Build prozesses -->
        <plugins>
            <!-- Konfiguration des surefire-Plugins anpassen -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M1</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <formats>
                        <format>xml</format>
                        <format>html</format>
                    </formats>
                </configuration>
            </plugin>

            <!-- Konfiguration des maven-compiler-Plugins anpassen -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <release>${java.version}</release>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                    <debug>true</debug>
                    <debuglevel>lines,vars,source</debuglevel>
                    <parameters>true</parameters>
                </configuration>
            </plugin>

            <!-- Konfiguration des maven-jar-Plugins anpassen -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <!-- Verändert / Erweitert das default-Manifest -->
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>main.java.main.MainClass</mainClass>
                        </manifest>
                    </archive>
                    <!-- Name der jar-Datei aendern -->
                    <finalName>VPM_Rebuild__Git_Test</finalName>
                    <!--  Ausgabeort für jar-Datei aendern -->
                      <outputDirectory>C:\Users\${user.name}\Documents\Programmierung_Java\EXPORT</outputDirectory>
                </configuration>
            </plugin>

            <!-- Konfiguration des jacoco-plugins anpassen -->
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.5</version>
                <configuration>
                    <append>false</append>
                </configuration>
                <executions>
                    <execution>
                        <id>pre-unit-test</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>post-unit-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!--
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <configLocation>google_checks.xml</configLocation>
                    <encoding>Cp1252</encoding>
                    <consoleOutput>true</consoleOutput>
                    <failsOnError>true</failsOnError>
                    <linkXRef>false</linkXRef>
                </configuration>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>package</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            -->

        </plugins>
    </build>
 
    <!-- Einbindung externer Bibliotheken -->
    <dependencies>
        <!-- junit jupiter -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
        <!-- junit 4.12.0 nutzen, selbe version wie eclipse -->
        <!--
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        -->
        <!-- jfree jfreechart -->
        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jfreechart</artifactId>
            <version>1.0.19</version>
        </dependency>
        <!-- jfree jcommon -->
        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jcommon</artifactId>
            <version>1.0.23</version>
        </dependency>
    </dependencies>
</project>
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Wie schon mal geschrieben - deine Struktur ist murks.

Die Verzeichnisstruktur sollte so aussehen:
Code:
src/main/java/package
src/main/resources
src/test/java/package
src/test/resources

Das heißt, deine MainClass müsste main.MainClass heißen und nicht main.java.main.MainClass. Das deutet darauf hin, dass das ganze Setup vermurkst ist.

In Eclipse sieht es auf jeden Fall korrekt aus.

Schmeiß auf jeden Fall mal den ganzen resources Block raus.

Außerdem nutzt in Eclipse Junit4-Annotation (BeforeClass), in der Pom ist aber Junit 5 eingebunden. Das sieht auch strange aus.
 
Hallo,

ich habe zuvor in Eclipse ein umfangreiches Refactoring durchgeführt, um den Code an die Maven-Vorgaben anzupassen, darum sieht es jetzt in Eclipse korrekt aus.
Hatte auch erst gedacht, dass es an der unkorrekten struktur liegt.

Gruss Hein_nieH
 
Zum Problem: Test-Klassen sollten auf "Test" enden, nicht auf "Test-02".


Zum Projekt: die Änderungen, die du an der pom vorgenommen hast, sind im wesentlichen großer Unsinn. Die pom, die ich gepostet hatte, war fertig und funktionierte so, da musste nichts dran geändert werden 🙂

Encoding solltest du einfach grundsätzlich immer auf UTF-8 lassen, es gibt wirklich keinen Grund, heutzutage im Java-Bereich irgendwas anderes zu nutzen.

resources brauchst du nicht extra zu konfigurieren, den Teil solltest du einfach weg lassen. So wie du es konfiguriert hast, führt das nur zu Fehlern, zB liegen alle Resourcen dann im Package [/icode]main.resources[/icode], das willst du ganz sicher nicht.

outputDirectory für die Jar zu setzen ist auch Unsinn, wenn du da nichts konfigurierst liegt die einfach im Target-Ordner, da wo sie jeder und jedes Toll erwartet – und nicht in irgendwelchen Ordnern, die uU nicht mal existieren.


Dann probier mal alles auf eine einheitliche Junit-Version umzustellen (ich empfehle Junit 5)
Ist es sogar schon, die Junit-4 Dependency ist auskommentiert (hab die Formatierung grad gefixt, jetzt erkennt man das auch).
 
By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns:

  • "**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
  • "**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
  • "**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
  • "**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
Da fällt deine Klasse leider nicht rein. Deswegen ist es sinnvoll sich an Standards zu halten 🙂
 
Hallo,

ich habe eine Lösung gefunden 🙂🙂🙂, deren Hintergrund für mich etwa seltsam ist.🙄🙄
Bei mir liegt die Ursache im Dateinamen.
Wenn der Dateiname der Testklasse "xyzTest.java" lautet, wurde der Test ignoriert.
Wenn der Dateiname jedoch mit dem Wort "Test" beginnt, dann hat es funktioniert, also "Testxyz.java" oder "Test_xyz.java".
Die Logik erschliesst sich für mich insofern nicht, da es in keiner Literatur hierzu einen Hinweis gab.

... habe ganz schön lange gebraucht, um auf die Lösung zu kommen 😡

Gruss Hein_nieH
 
Hallo,

ich habe eine Lösung gefunden 🙂🙂🙂, deren Hintergrund für mich etwa seltsam ist.🙄🙄
Bei mir liegt die Ursache im Dateinamen.
Wenn der Dateiname der Testklasse "xyzTest.java" lautet, wurde der Test ignoriert.
Wenn der Dateiname jedoch mit dem Wort "Test" beginnt, dann hat es funktioniert, also "Testxyz.java" oder "Test_xyz.java".
Die Logik erschliesst sich für mich insofern nicht, da es in keiner Literatur hierzu einen Hinweis gab.

... habe ganz schön lange gebraucht, um auf die Lösung zu kommen 😡

Gruss Hein_nieH
Schau mal einen Beitrag über deinen. Da steht exakt das inkl. Link zur Dokumentation

Hier steht auch was: https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven-filter-test-class-names
 
Nachtrag: Was meinst du mit Literatur? Bei sowas nie sich auf Bücher verlassen und immer die Dokumentation der verwendeten Tools (Hier: Maven Surefire, JUnit) lesen.
 
Hallo,

ich habe eine Lösung gefunden 🙂🙂🙂, deren Hintergrund für mich etwa seltsam ist.🙄🙄
Bei mir liegt die Ursache im Dateinamen.
Wenn der Dateiname der Testklasse "xyzTest.java" lautet, wurde der Test ignoriert.
Wenn der Dateiname jedoch mit dem Wort "Test" beginnt, dann hat es funktioniert, also "Testxyz.java" oder "Test_xyz.java".
Die Logik erschliesst sich für mich insofern nicht, da es in keiner Literatur hierzu einen Hinweis gab.

... habe ganz schön lange gebraucht, um auf die Lösung zu kommen 😡

Gruss Hein_nieH
Das funktioniert auch mit xyzTest.java, zumindest mit der pom.xml von oben. Deine Klasse hieß endete allerdings nicht auf Test, deshalb funktionierte das nicht.
 
Hallo,

ich habe noch einmal die Sache geprüft.
Jetzt funktioniert auch xyzTest.java.

Wichtig ist nur, dass der Dateinamen den Teilstring "Test" enthält, egal ob am Anfang oder am Ende.
Mein ursprünglicher Fehler war, dass meine Testklassen nicht den String "Test" enthielten.

Gruss Hein_nieH
 

Neue Themen


Zurück
Oben