pom.xml Maven-Konfiguration zum Ausführen von JUnit 4 + JUnit 5 Jupiter-Tests in einem gemischten Java + Kotlin-Projekt

Maksim Kostromin:

Ich kann das Maven-Projekt nicht erfolgreich konfigurieren, um gemischte JUnit 4 / JUnit 5 Jupiter-Tests für Java und Kotlin auszuführen.

Ich habe keine Probleme, Gradle zu konfigurieren (zum Beispiel funktioniert diese Konfiguration gut für meine Bedürfnisse), aber nicht maven. Ich habe verschiedene Konfigurationen von Maven, Kotlin, todsicheren Plugins mit verschiedenen Versionen von JUnit Jupiter und Plattformabhängigkeiten ausprobiert, war aber kein Erfolg ...

Kann jemand von euch ein gutes Beispiel geben?

Ich habe auch ähnliche Fragen zu GitHub-Problemen des JUnit-Teams und im Kotlin-Slack-Channel gestellt: - https://github.com/junit-team/junit5/issues/1899 - https://kotlinlang.slack.com/archives/C0922A726/ p155880442804330


Grüße, Maksim

Maksim Kostromin:

Okay ... Ich habe ein paar Stunden verbracht und anscheinend eine Antwort gefunden. Hier ein Beispiel für eine bearbeitete pom.xml-Datei für ein Maven-Projekt mit mehreren Modulen zur Ausführung gemischter JUnit 4 Vintage- und JUnit 5 Jupiter-Tests zusammen mit gemischten Java- und Kotlin-Testklassen mit den folgenden Einschränkungen:

src/
  test/
    java/
      **/*JUnit4VintageJavaTest.java  +
      **/*JUnit4VintageKotlinTest.kt  +
      **/*JUnit5JupiterJavaTest.java  +
      **/*JUnit5JupiterKotlinTest.kt  +
    kotlin/
      **/*JUnit4VintageJavaTest.java  -
      **/*JUnit4VintageKotlinTest.kt  +
      **/*JUnit5JupiterJavaTest.java  -
      **/*JUnit5JupiterKotlinTest.kt  +

wo

+ bedeutet: Tests werden ausgeführt

- bedeutet: Aus bestimmten Gründen werden Tests nicht mit der bereitgestellten Konfiguration ausgeführt ...

pom.xml Datei:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.daggerok</groupId>
  <artifactId>mixed-kotlin-java-jupiter-tests-maven-execution</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <!--
  <modules>
    <module>module-1</module>
    <module>module-2</module>
  </modules>
  -->

  <properties>
    <java.version>1.8</java.version>
    <kotlin.version>1.3.31</kotlin.version>
    <junit-jupiter.version>5.5.0-M1</junit-jupiter.version>
    <junit-platform.version>1.5.0-M1</junit-platform.version>

    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
    <maven-surefire-plugin.version>3.0.0-M3</maven-surefire-plugin.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-stdlib</artifactId>
      <version>${kotlin.version}</version>
    </dependency>

    <!-- junit 4 -->
    <dependency><!-- already contains junit:4.12 dependency, so we are not going to add it explicitly! -->
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-test-junit</artifactId>
      <version>${kotlin.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency><!-- vintage engine is required if you wanna execute JUnit 4 together with JUnit 5 Jupiter tests... -->
      <groupId>org.junit.vintage</groupId>
      <artifactId>junit-vintage-engine</artifactId>
      <version>${junit-jupiter.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- junit 5 -->
    <dependency>
      <groupId>org.jetbrains.kotlin</groupId>
      <artifactId>kotlin-test-junit5</artifactId>
      <version>${kotlin.version}</version>
      <scope>test</scope>
      <!-- includes junit-jupiter-api:5.0.0 and junit-jupiter-engine:5.2.0, but we need other versions -->
        <exclusions>
            <exclusion>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency><!-- includes junit-jupiter-api and junit-jupiter-engine dependencies -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <defaultGoal>test</defaultGoal>

    <plugins>
      <plugin>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-maven-plugin</artifactId>
        <version>${kotlin.version}</version>
        <configuration>
          <experimentalCoroutines>enable</experimentalCoroutines>
        </configuration>
        <executions>
          <execution>
            <id>compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
            <configuration>
              <sourceDirs>
                <sourceDir>${project.basedir}/src/main/java</sourceDir>
                <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
              </sourceDirs>
            </configuration>
          </execution>
          <execution>
            <id>test-compile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>test-compile</goal>
            </goals>
            <configuration>
              <sourceDirs>
                <sourceDir>${project.basedir}/src/test/java</sourceDir>
                <sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
              </sourceDirs>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <executions>
          <execution>
            <id>default-compile</id>
            <phase>none</phase>
          </execution>
          <execution>
            <id>default-testCompile</id>
            <phase>none</phase>
          </execution>
          <execution>
            <id>java-compile</id>
            <phase>compile</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
          <execution>
            <id>java-test-compile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven-surefire-plugin.version}</version>
      </plugin>
    </plugins>
  </build>

</project>

Arbeitsbeispiel befindet sich hier

So überprüfen Sie:

git clone https://github.com/daggerok/mixed-kotlin-java-jupiter-tests testme ; cd $_ ; mvn test

Nur die Frage kann nicht beantwortet werden, ob es möglich ist und wie man ein Maven-Projekt konfiguriert, wo es erlaubt ist, Java-Testklassen im Verzeichnis src / test / kotlin Testquellen zu platzieren und zu erkennen. Aber es scheint eine andere Frage zu sein und diese muss geschlossen werden.

Meine PR mit der entsprechenden Stichprobe wurde gerade mit dem Projekt junit-team / junit5-samples zusammengeführt und ist hier verfügbar

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv