Mavenが実行するJUnitテストを見つけられない


416

私はMavenプログラムを持っています、それはうまくコンパイルします。私が実行するmvn testと、テストは実行されません(TESTsヘッダーの下にThere are no tests to run.)。

この問題を非常に簡単な設定で再現しました-X。以下に含めるだけでなく、で実行したときの出力も含めます。

単体テストはeclipseから正常に実行されます(デフォルトのjunitパッケージを使用する場合と、代わりにmavenによってダウンロードされたjunit.jarを含める場合)。また、mvn test-compileはtest-classesの下でクラスを正しく作成します。私はこれをOSX 10.6.7とMaven 3.0.2およびjava 1.6.0_24で実行しています。

ディレクトリ構造は次のとおりです。

/my_program/pom.xml
/my_program/src/main/java/ClassUnderTest.java
/my_program/src/test/java/ClassUnderTestTests.java

pom.xml:

<?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>my_group</groupId>
    <artifactId>my_program</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>My Program</name>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

ClassUnderTest.java:

public class ClassUnderTest {

    public int functionUnderTest(int n) {
        return n;
    }

}

ClassUnderTestTests.java:

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class ClassUnderTestTests {

    private ClassUnderTest o;

    @Before
    public void setUp() {
        o = new ClassUnderTest();
    }

    @Test
    public void testFunctionUnderTest_testCase1() {
        Assert.assertEquals(1, o.functionUnderTest(1));
    }

    @Test
    public void testFunctionUnderTest_testCase2() {
        Assert.assertEquals(2, o.functionUnderTest(2));
    }
}

mvn -Xテストの終了:

[DEBUG] Configuring mojo org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-surefire-plugin:2.7.1, parent: sun.misc.Launcher$AppClassLoader@5224ee]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.7.1:test' with basic configurator -->
[DEBUG]   (s) basedir = /Users/aaron/Programs/my_program
[DEBUG]   (s) childDelegation = false
[DEBUG]   (s) classesDirectory = /Users/aaron/Programs/my_program/target/classes
[DEBUG]   (s) disableXmlReport = false
[DEBUG]   (s) enableAssertions = true
[DEBUG]   (s) forkMode = once
[DEBUG]   (s) junitArtifactName = junit:junit
[DEBUG]   (s) localRepository =        id: local
      url: file:///Users/aaron/.m2/repository/
   layout: none

[DEBUG]   (f) parallelMavenExecution = false
[DEBUG]   (s) pluginArtifactMap = {org.apache.maven.plugins:maven-surefire-plugin=org.apache.maven.plugins:maven-surefire-plugin:maven-plugin:2.7.1:, org.apache.maven.surefire:surefire-booter=org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile, org.apache.maven.surefire:surefire-api=org.apache.maven.surefire:surefire-api:jar:2.7.1:compile, org.apache.maven.surefire:maven-surefire-common=org.apache.maven.surefire:maven-surefire-common:jar:2.7.1:compile, org.apache.maven.shared:maven-common-artifact-filters=org.apache.maven.shared:maven-common-artifact-filters:jar:1.3:compile, org.codehaus.plexus:plexus-utils=org.codehaus.plexus:plexus-utils:jar:2.0.5:compile, junit:junit=junit:junit:jar:3.8.1:compile, org.apache.maven.reporting:maven-reporting-api=org.apache.maven.reporting:maven-reporting-api:jar:2.0.9:compile}
[DEBUG]   (s) printSummary = true
[DEBUG]   (s) project = MavenProject: my_group:my_program:1.0-SNAPSHOT @ /Users/aaron/Programs/my_program/pom.xml
[DEBUG]   (s) projectArtifactMap = {junit:junit=junit:junit:jar:4.8.1:test}
[DEBUG]   (s) redirectTestOutputToFile = false
[DEBUG]   (s) remoteRepositories = [       id: central
      url: http://repo1.maven.org/maven2
   layout: default
snapshots: [enabled => false, update => daily]
 releases: [enabled => true, update => never]
]
[DEBUG]   (s) reportFormat = brief
[DEBUG]   (s) reportsDirectory = /Users/aaron/Programs/my_program/target/surefire-reports
[DEBUG]   (s) session = org.apache.maven.execution.MavenSession@dfbb43
[DEBUG]   (s) skip = false
[DEBUG]   (s) skipTests = false
[DEBUG]   (s) testClassesDirectory = /Users/aaron/Programs/my_program/target/test-classes
[DEBUG]   (s) testFailureIgnore = false
[DEBUG]   (s) testNGArtifactName = org.testng:testng
[DEBUG]   (s) testSourceDirectory = /Users/aaron/Programs/my_program/src/test/java
[DEBUG]   (s) trimStackTrace = true
[DEBUG]   (s) useFile = true
[DEBUG]   (s) useManifestOnlyJar = true
[DEBUG]   (s) workingDirectory = /Users/aaron/Programs/my_program
[DEBUG] -- end configuration --
[INFO] Surefire report directory: /Users/aaron/Programs/my_program/target/surefire-reports
[DEBUG] Setting system property [user.dir]=[/Users/aaron/Programs/my_program]
[DEBUG] Setting system property [localRepository]=[/Users/aaron/.m2/repository]
[DEBUG] Setting system property [basedir]=[/Users/aaron/Programs/my_program]
[DEBUG] Using JVM: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-junit4:jar:2.7.1:test (selected for test)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:test (selected for test)
[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.7.1/surefire-junit4-2.7.1.jar Scope: test
[DEBUG] Adding to surefire test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: test
[DEBUG] Test Classpath :
[DEBUG]   /Users/aaron/Programs/my_program/target/test-classes
[DEBUG]   /Users/aaron/Programs/my_program/target/classes
[DEBUG]   /Users/aaron/.m2/repository/junit/junit/4.8.1/junit-4.8.1.jar
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /Users/aaron/.m2/repository
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.7.1:compile (selected for compile)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.7.1:compile (selected for compile)
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-booter/2.7.1/surefire-booter-2.7.1.jar Scope: compile
[DEBUG] Adding to surefire booter test classpath: /Users/aaron/.m2/repository/org/apache/maven/surefire/surefire-api/2.7.1/surefire-api-2.7.1.jar Scope: compile
Forking command line: /bin/sh -c cd /Users/aaron/Programs/my_program && /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar /Users/aaron/Programs/my_program/target/surefire/surefirebooter6118081963679415631.jar /Users/aaron/Programs/my_program/target/surefire/surefire4887918564882595612tmp /Users/aaron/Programs/my_program/target/surefire/surefire9012255138269731406tmp

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
There are no tests to run.

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.089s
[INFO] Finished at: Mon May 30 12:03:09 EDT 2011
[INFO] Final Memory: 7M/62M
[INFO] ------------------------------------------------------------------------

回答:


667

デフォルトでは、 Maven 実行するテストを探すときに次の命名規則を使用します。

テストクラスがこれらの規則に従っていない場合は、名前を変更するか、テストクラスに別のパターンを使用するようにMaven Surefireプラグイン構成する必要があります


4
Maven設定を変更する方が魅力的です。この命名規則は、経験の浅いユーザーにいくつかの危険をもたらします。SomethingTest1、SomethingTest2のようなテストケースに名前を付けると、テストが静かに実行されなくなります。Mavenは下位互換性のためにこれを行うことはできませんが、すべてのファイルでテストケースを検索するためにより多くのロジックを継ぎ合わせます。
Tobias Kremer 2013

8
私はこれを知りませんでした-「テスト」で終わった2つのケースがあり、Mavenはそれらの実行を拒否しました...「テスト」に変更しました。ありがとう。
demaniak 2014

2
@トビアス命名規則によって課される危険についてのあなたの意見に同意します。また、注釈の使用によって暗示されるパターンも壊れます。注釈を使用すると、暗黙の結果として、特定の注釈を持つクラス/メソッドを検索できます。Mavenが命名規則の制限を設けず、代わりに任意のクラスの@Testアノテーション付きメソッドのスキャンのみに依存することを期待していました。
Angad、2014

2
surefireのドキュメントでは、デフォルトのインクルードであると記載されいることに注意してください**/*Tests.java
Gareth、

11
質問:それで、とにかくTest *の規則に従う必要があるのに、なぜ@testで注釈を付けるのですか?
dynex

88

また、単体テストコードをテストフォルダーに配置する必要があることもわかりました。メインフォルダーに配置すると、テストクラスとして認識されません。例えば。

違う

/my_program/src/main/java/NotTest.java

正しい

/my_program/src/test/java/MyTest.java

3
ありがとうございます!これと<scope>test<scope>pom.xmlファイル内でテスト()にスコープを設定すると、私のためにそれを行いました。
dinesharjani

私はこれに遭遇しました、テストとテストに気をつけてください。適切なのはテストです
Bruck Wubete

72

モジュールのパッケージが正しく宣言されていない場合、Mavenがテストを見つけられない原因となる可能性があるもう1つのこと。

最近のケースでは、誰かが持っていて<packaging>pom</packaging>、私のテストは決して実行されませんでした。私はそれを変更しましたが<packaging>jar</packaging>、今ではうまくいきます。


4
素晴らしい提案!単一モジュールのMavenアーティファクトを複数に分割するときの「コピーと貼り付け」の危険性を示します。
morsor

4
Mavenがメッセージを印刷したい-- package type is pom - so not running tests開発者にいくつかの手がかりを与えるために:(
Arun Avanathan

60

更新:

@scottyseusがコメントで言ったように、Maven Surefire 2.22.0以降では、次で十分です。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
</plugin>

JUnit 5を使用しているときに、同じ問題に遭遇しました。Maven Surefireには、JUnit 5テストを実行するためのプラグインが必要です。これを私たちに追加してくださいpom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.21.0</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.2.0-M1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.2.0-M1</version>
        </dependency>
    </dependencies>
</plugin>

ソース:https//junit.org/junit5/docs/current/user-guide/#running-tests-build-maven


の「見つかりません」が表示されjunit-platform-surefire-providerます。
Arya Pourtabatabaie

2
Surefire 2.22では、surefire-providerまたはjupiter-engineアーティファクトに依存関係を追加する必要がないことに注意してください。私のテストは、少なくともそれらがなくても問題なく実行できるようです。この回答を参照してください。
scottysseus

また、このプラグインを使用する場合は、org.junit.jupiter.api.Test代わりに使用する必要がありますorg.junit.Test。そうしないと、テストが見つかりません。
austin_ce 2019

30

また、テストクラスディレクトリ(例:src / test / java)<testSourceDirectory>が、pom.xmlの<build>propertyの下にあるproperty にリストされているディレクトリに対応しているかどうかを確認します。それを見つけるのにしばらくかかった。


13

プロジェクトがある場合、Mavenはテストを実行しません <packaging>pom</packaging>

テストを実行するには、パッケージングをjar(または他のJavaアーティファクトタイプ)に設定する必要があります。 <packaging>jar</packaging>


12

私の場合、古いバージョンのJUnitテストと互換性があり、実行できるようにするjunit-vintage-engineを追加していました。JUnit 5を使用しているため。

<dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <scope>test</scope>
</dependency>

SpringBootには、使用するものだけが含まれていると思います。必要に応じて依存関係を指定する必要があるのは理にかなっています。それ以外の場合は、使用しないライブラリ全体をインポートします。
Duc Tran

12

これらの回答の多くは以前は私にとって非常に役に立ちましたが、将来的に他の人を助ける可能性があるため、時間がかかる追加のシナリオを追加したいと思います。

テストクラスとメソッドがパブリックであることを確認してください。

私の問題は、IDE(IntelliJ)の自動テストクラス/メソッド生成機能を使用していて、何らかの理由でそれらをpackage-privateとして作成していたことでした。これは、予想よりも見逃しやすいことがわかりました。


1
これも私が抱えていた問題です。何らかの理由で、IntelliJはpackage-privateとしてテストを作成しており、Mavenはそれらを認識できません。クラスと@Testメソッドをpublicに変更すると、テストが実行されます。
AlexC

私の問題を解決しました!これはJUnit 5以降には適用されないことに注意してください。IntelliJのコードジェネレーターは、最新バージョンを使用していると想定しています。
lamino

@lamino junit5を使用していて、テストメソッドが公開されていなかったため失敗しました
SudhirKumar

IntelliJから、メソッドがパッケージプライベートである可能性があることを伝えるには少し生意気です..
Wecherowski

9

それを確認してください(jUnit-4.12およびEclipse surefireプラグインの場合)

  1. 依存関係のPOM.xmlに必要なjUnitバージョンを追加します。Mavenを実行->プロジェクトを更新して、プロジェクトでエクスポートされた必要なjarを確認します。
  2. テストクラスは、フォルダーsrc / test / javaおよびこのフォルダーのサブディレクトリの下にあります(または基本フォルダーは、config testSourceDirectoryのPOMで指定できます)。クラスの名前には「Test」という末尾の単語が必要です。
  3. テストクラスのテストメソッドにはアノテーション@Testが必要です

1
これはより多くのJava構成の問題ですが、テストクラスに適切な名前を付け、srcの下のテストディレクトリにテストファイルを配置することに加えて、テストクラスのパッケージ名は、テストするクラスのパッケージ名と一致する必要があります。
ポール、

2
@Paul False-Mavenは、の規則に一致src/test/javaするすべてのクラスを実行します。パッケージの規則は、構造と、テストがpackage-privateメソッドにアクセスできるようにするためのものです。
マイケルK


6

私はこの問題に苦しんでいます。私の場合、正しい@Testアノテーションをインポートしていませんでした。

1)@Testがorg.junit.jupiter.api.Testからのものかどうかを確認します(Junit 5を使用している場合)。

2)Junit5の代わりに@RunWith(SpringRunner.class)@ExtendWith(SpringExtension.class)

import org.junit.jupiter.api.Test;

@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:application.properties")    
public class CotacaoTest {
    @Test
    public void testXXX() {

    }
}

4

共有Java / Groovyアプリケーションがあり、Groovyユニットテストしか持っていない場合、Mavenはテストを見つけることができません。これは、src / test / javaの下に1つの単体テストを追加することで修正できます。


4

調べたところ、testngの依存関係がこの問題を引き起こしていることがわかりました。testngの依存関係をpomから削除すると(もう必要なくなったため)、問題なく動作し始めました。

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8</version>
        <scope>test</scope>
    </dependency>

4

Spring InitializrSpring Bootを使用してアプリケーションを作成した場合、テストはIntellij Ideaから正常に実行されています。ただし、コマンドラインからテストを実行しようとすると、次のようになります。

mvn clean test

テストがまったく実行されなかったことに驚いたかもしれません。surefire plugin運が悪いので追加しようとしました。答えは簡単でしpom.xmlた。次の依存関係が含まれていました。

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
           <exclusion>
              <groupId>org.junit.vintage</groupId>
              <artifactId>junit-vintage-engine</artifactId>
           </exclusion>
        </exclusions>
     </dependency>

除外はjunit-vintage-engine、との下位互換性を維持するためのものJUnit 4.xです。そのため、Spring Boot Initializrの新しいバージョンは、デフォルトではサポートしていません。除外を削除した後、Mavenプロジェクトのテストを確認し始めました。


3

テストクラス名が標準の命名規則に従っていない場合(上記の@axtavtで強調表示されています)、pom.xmlMavenがテストを選択するためにパターン/クラス名をに追加する必要があります-

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/*_UT.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build> 
...

2
/my_program/src/test/java/ClassUnderTestTests.java

する必要があります

/my_program/src/test/java/ClassUnderTestTest.java

Mavenは、これらの終了テストを検出するか、テストで開始して自動的に実行します。

ただし、

mvn surefire:test -Dtest=ClassUnderTestTests.java 

テストを実行します。


2

これが私がpom.xmlに追加しなければならない正確なコードです。

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <dependencies>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-surefire-provider</artifactId>
                    <version>1.2.0-M1</version>
                </dependency>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>5.2.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

そして、これが私の依存関係です:

    <dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.2.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.easytesting</groupId>
        <artifactId>fest-assert-core</artifactId>
        <version>2.0M10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-surefire-provider</artifactId>
        <version>1.2.0-M1</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.2.0-M1</version>
    </dependency>
</dependencies>

2

私は同じ問題に直面しました、それはpom.xmlの以下の変更によって解決されました:

<build>
    <testSourceDirectory>test</testSourceDirectory>

...

に変更:

<build>
    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>

1

テストケースを実行しないもう1つの理由は私に起こりました-私は完全に異なる目的で "test"という名前のプロパティを持っていましたが、それはsurefireプラグインに干渉しました。したがって、POMで次のことを確認してください。

<properties>
  <test>.... </test>
  ...
</properties>

そしてそれを削除します。


1

もう1つのヒント(前の回答に加えて):

Eclipseで、プロジェクトのプロパティに移動し、次のようにクリックしますRun/Debug Settings

「このページでは、現在選択されているリソースで起動構成を管理できます」

そこでは、プロジェクト(src/test/javaフォルダーまたはコースの下)にあるJU(JUnit)テストを追加(新規...)または削除(削除)できます。


1

JUnit 4でテストを記述し、JUnit 5の依存関係をsurefireプラグインに追加した場合、テストは実行されません。

その場合、surefireプラグインからJUnit 5の依存関係をコメント化するだけです。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <!--<dependencies>-->
                <!--<dependency>-->
                    <!--<groupId>org.junit.platform</groupId>-->
                    <!--<artifactId>junit-platform-surefire-provider</artifactId>-->
                    <!--<version>1.0.0</version>-->
                <!--</dependency>-->
                <!--<dependency>-->
                    <!--<groupId>org.junit.jupiter</groupId>-->
                    <!--<artifactId>junit-jupiter-engine</artifactId>-->
                    <!--<version>${junit.version}</version>-->
                <!--</dependency>-->
            <!--</dependencies>-->
        </plugin>

1

JUnit 5では、私にとってはうまくいきました

https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>
<!-- ... -->
<dependencies>
    <!-- ... -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.4.0</version>
        <scope>test</scope>
    </dependency>
    <!-- ... -->
</dependencies>
<!-- ... -->

1

私の場合、マルチモジュールアプリケーションをSpring Bootに移行しています。残念ながら、mavenはモジュールですべてのテストを実行しませんでした。テストクラスの命名は変更されていません。命名規則に従っています。

最後に、依存関係surefire-junit47をプラグインに追加したときに役立ちましたmaven-surefire-plugin。しかし、私は説明できませんでした。なぜか、それは試行錯誤でした。

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


1

Maven 3.6.2でJunit-5テストケースを実行していて、常にテスト実行:0が表示されていました

[

INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.547 s
[INFO] Finished at: 2019-12-22T00:03:37-08:00
[INFO] ------------------------------------------------------------------------

Junt-5テストがMavenリンクで実行されていません


0

junitArtifactName使用中のJUnitが標準(junit:junit)ではない場合にも当てはまるかもしれませんが、たとえば...

<dependency>
    <groupId>org.eclipse.orbit</groupId>
    <artifactId>org.junit</artifactId>
    <version>4.11.0</version>
    <type>bundle</type>
    <scope>test</scope>
</dependency>

0

誰かが検索してそれを解決しなかった場合に備えて、さまざまなテスト用のライブラリを用意しました。

<dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${org.junit.jupiter.version}</version>
        <scope>test</scope>
    </dependency>

私がjunitをインストールしたとき、すべてがうまくいったことを願って、これを助けます:

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

0

このコードを使用しました

<sourceDirectory>src_controller</sourceDirectory>
  <testSourceDirectory>src_test</testSourceDirectory>

私のpom.xmlに、特定のtestngファイルがあることを確認してください

<suiteXmlFile>/Users/mac/xxx/xxx/xx.xxxx.xx/xxx.restassured.xx/testng.xml</suiteXmlFile>

0

このような問題は、surfireプラグイン3.x.x +をJUnit5で使用し、誤ってテストクラスに@TestJUnit4からのアノテーションを付けた場合に発生する可能性があります。

使用:org.junit.jupiter.api.Test(JUnit5)の代わりにorg.junit.Test(JUnit5)

注:JUnit4テストと同じようにIDEがこのwihout問題を実行する可能性があるため、これは気づきにくいかもしれません。


0

別の見落とされがちな問題-クラスのファイルに.java拡張子が付いていることを確認してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.