Maven nie znajduje testów JUnit do uruchomienia

416

Mam program maven, kompiluje się dobrze. Po uruchomieniu mvn testnie uruchamia żadnych testów (pod nagłówkiem TESTY mówi There are no tests to run.).

Odtworzyłem ten problem z super prostą konfiguracją, którą przedstawię poniżej, a także dane wyjściowe po uruchomieniu -X.

Testy jednostkowe działają poprawnie w środowisku eclipse (zarówno z domyślnym pakietem junit, jak i wtedy, gdy dołączam plik junit.jar pobrany przez maven). Również mvn test-compilepoprawnie tworzy klasę w klasach testowych. Używam tego na OSX 10.6.7 z Maven 3.0.2 i java 1.6.0_24.

Oto struktura katalogów:

/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));
    }
}

Koniec testu 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] ------------------------------------------------------------------------
Zugwalt
źródło

Odpowiedzi:

667

Domyślnie Maven używa następujących konwencji nazewnictwa podczas wyszukiwania testów do uruchomienia:

Jeśli twoja klasa testowa nie przestrzega tych konwencji, powinieneś zmienić jej nazwę lub skonfigurować wtyczkę Maven Surefire, aby używała innego wzorca dla klas testowych.

axtavt
źródło
4
Uważam, że bardziej atrakcyjna jest zmiana konfiguracji maven. Ta konwencja nazewnictwa stwarza pewne zagrożenie dla niedoświadczonego użytkownika. Nazewnictwo twoich przypadków testowych jak SomethingTest1, SomethingTest2 spowodowałoby, że testy po cichu nie byłyby wykonywane. Maven nie może tego zrobić ze względu na zgodność z poprzednimi wersjami, ale zapewnia większą logikę wyszukiwania przypadków testowych we wszystkich plikach.
Tobias Kremer,
8
Nigdy o tym nie wiedziałem - miałem dwie sprawy zakończone „Testami”, a maven odmówił ich uruchomienia… zmienił się na „Test” i znów wszystko jest dobrze w gildii Lollipop. Dzięki.
demaniak
2
@Tobias Zgadzam się z twoim punktem widzenia na temat niebezpieczeństw związanych z konwencją nazewnictwa. W pewnym sensie psuje to również wzorzec wynikający z zastosowania adnotacji. Domniemany efekt użycia adnotacji polega na tym, że można przeszukiwać klasy / metody posiadające określoną adnotację. Miałem nadzieję, że Maven nie wprowadził ograniczenia konwencji nazewnictwa i zamiast tego polegał wyłącznie na skanowaniu metod z komentarzami @Test w dowolnej klasie.
Angad
2
Zauważ, że dokumentacja surefire twierdzi teraz , że **/*Tests.javajest to domyślna opcja!
Gareth,
11
Pytanie: Więc po co komentować @test, jeśli i tak musisz przestrzegać konwencji Test *?
dynex
88

Odkryłem również, że kod testu jednostkowego powinien być umieszczony w folderze testowym, nie można go rozpoznać jako klasy testowej, jeśli umieścisz go w folderze głównym. na przykład.

Źle

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

Dobrze

/my_program/src/test/java/MyTest.java
Robin Ma
źródło
3
Dziękuję ci! To i ustawienie zakresu na test ( <scope>test<scope>) w pom.xmlpliku zrobiło to dla mnie.
dinesharjani
Wpadłem na to, uważaj na testy kontra test. Właściwy to test
Bruck Wubete,
72

Kolejna rzecz, która może spowodować, że Maven nie znajdzie testów, jeśli opakowanie modułu nie zostanie poprawnie zadeklarowane.

W ostatnim przypadku ktoś miał <packaging>pom</packaging>i moje testy nigdy się nie uruchomiły. Zmieniłem to na <packaging>jar</packaging>i teraz działa dobrze.

Jon
źródło
4
Doskonała sugestia! Demonstruje niebezpieczeństwa związane z „kopiowaniem i wklejaniem” podczas dzielenia artefaktu Maven z jednego modułu na wiele.
morsor
4
Chciałbym, żeby maven wydrukował wiadomość - package type is pom - so not running tests- aby dać wskazówki programistom :(
Arun Avanathan
60

AKTUALIZACJA:

Jak napisano w komentarzach @scottyseus, począwszy od Maven Surefire 2.22.0, wystarczy:

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

Podczas korzystania z JUnit 5 napotkałem ten sam problem. Maven Surefire potrzebuje wtyczki do uruchomienia testów JUnit 5. Dodaj to do naszego 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>

Źródło: https://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven

teyzer
źródło
Dostaję komunikat „nie znaleziono” dla junit-platform-surefire-provider.
Arya Pourtabatabaie
2
Należy pamiętać, że w przypadku Surefire 2.22 nie powinno być konieczne dodawanie zależności od artefaktów surefire-providerlub jupiter-engine. Wydaje mi się, że moje testy przebiegają bez nich przynajmniej dobrze. zobacz tę odpowiedź .
scottysseus,
Warto również zauważyć, że musisz użyć org.junit.jupiter.api.Testzamiast org.junit.Testpodczas korzystania z tej wtyczki, w przeciwnym razie testy nie zostaną znalezione.
austin_ce,
30

Sprawdź również, czy katalog klas testów (np. Src / test / java) odpowiada katalogowi wymienionemu we właściwości <testSourceDirectory> w pliku pom.xml w ramach <build>właściwości. Zajęło mi to trochę czasu, aby to znaleźć.

t3rmin41
źródło
13

Maven nie uruchomi testów, jeśli projekt je posiada <packaging>pom</packaging>

Aby testy zostały uruchomione, należy ustawić opakowanie na jar (lub inny typ artefaktu Java): <packaging>jar</packaging>

robjwilkins
źródło
12

W moim przypadku dodałem silnik junit-vintage, który czyni go kompatybilnym ze starszymi wersjami testów JUnit i może je uruchamiać. Gdy używam JUnit 5.

<dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <scope>test</scope>
</dependency>
Duc Tran
źródło
Myślę, że SpringBoot zawiera tylko to, czego używa. Sensowne jest, że musisz określić swoje zależności zgodnie ze swoimi potrzebami. W przeciwnym razie zaimportujesz całą bibliotekę, której nie używasz.
Duc Tran
12

Wiele z tych odpowiedzi było dla mnie bardzo przydatnych w przeszłości, ale chciałbym dodać dodatkowy scenariusz, który kosztował mnie trochę czasu, ponieważ może pomóc innym w przyszłości:

Upewnij się, że klasy testowe i metody są publiczne.

Mój problem polegał na tym, że korzystałem z funkcji automatycznego generowania klas / metod testowych w moim IDE (IntelliJ) iz jakiegoś powodu stworzyłem je jako prywatne dla pakietu. Łatwiej mi to przegapić, niż można by się spodziewać.

João Matos
źródło
1
Z tym też miałem problem. Z jakiegoś powodu IntelliJ tworzy testy, ponieważ pakiet prywatny i Maven ich nie widzi. Zmieniając klasę i metodę @Test na publiczną, maven wykonuje testy.
AlexC
Rozwiązałem mój problem! Pamiętaj, że nie dotyczy to JUnit 5+. Myślę, że generator kodu IntelliJ zakłada, że ​​używasz najnowszej wersji.
lamino
@lamino Używałem junit5 i to się nie powiodło, ponieważ moja metoda testowa nie była publiczna
SudhirKumar
Nieco bezczelny z IntelliJ, aby powiedzieć mi, że metody mogą być pakietowo-prywatne ..
Wecherowski
9

Sprawdź to (dla jUnit - 4.12 i wtyczki surefire Eclipse)

  1. Dodaj wymaganą wersję jUnit do POM.xml w zależnościach. Do Maven -> Zaktualizuj projekt, aby zobaczyć wymagane słoiki wyeksportowane w projekcie.
  2. Klasa testowa znajduje się w folderze src / test / java i podkatalogach tego folderu (lub folder podstawowy można określić w POM w config testSourceDirectory). Nazwa klasy powinna zawierać słowo „Test”.
  3. Metoda testowa w klasie testowej powinna mieć adnotację @Test
Mitra
źródło
1
Jest to bardziej problem z konfiguracją Java, ale oprócz prawidłowego nazewnictwa klasy testowej i umieszczenia pliku testowego w katalogu testowym pod src, nazwa pakietu klasy testowej musi być zgodna z nazwą pakietu testowanej klasy.
Paul
2
@Paul False - Maven wykona wszystkie klasy zgodne z konwencją podsrc/test/java . Konwencja pakietów dotyczy struktury i umożliwia testom dostęp do metod prywatnych.
Michael K
9

Odkryty, jeśli poprzedzisz test słowem „Streszczenie”, zostanie on również domyślnie zignorowany.

użytkownik1016765
źródło
1
maven.apache.org/guides/getting-started `` A domyślnymi wyjątkami są: * / Abstract Test.java * / Abstract TestCase.java ``
Antoine Meyer
Wydaje się to również ignorować */TestAbstractSomeClassName.java.
Collin Krawll
6

Walczę z tym problemem. W moim przypadku nie importowałem właściwej adnotacji @Test .

1) Sprawdź, czy @Test pochodzi z org.junit.jupiter.api.Test (jeśli używasz Junit 5).

2) Z Junit5 zamiast @RunWith(SpringRunner.class), użyj@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() {

    }
}
edubriguenti
źródło
4

Jeśli masz udostępnioną aplikację Java / Groovy i wszystko, co masz, to testy jednostkowe Groovy, Maven nie znajdzie żadnych testów. Można to naprawić, dodając jeden test jednostkowy w src / test / java.

Bruce Szalwinski
źródło
4

Miałem również podobny problem, po zbadaniu odkryłem, że przyczyną tego problemu jest zależność testowania. Po usunięciu zależności testng z pom (ponieważ już jej nie potrzebuję), zaczęła działać dobrze dla mnie.

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8</version>
        <scope>test</scope>
    </dependency>
Rajesh Madhavan
źródło
4

Jeśli utworzyłeś Spring Bootaplikację za pomocą Spring Initializr , testy są uruchamiane poprawnie z Intellij Idea. Ale jeśli spróbujesz uruchomić testy z wiersza polecenia:

mvn clean test

Możesz być zaskoczony, że nie przeprowadzono żadnych testów. Próbowałem dodać surefire pluginbez powodzenia. Odpowiedź była prosta: pom.xmlzawierała następującą zależność:

     <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>

Wykluczenie junit-vintage-enginesłuży do zachowania zgodności z poprzednimi wersjami JUnit 4.x. Nowe wersje Spring Boot Initializr nie obsługują go domyślnie. Po usunięciu wykluczenia Mavenzacząłem oglądać testy projektu.

Tępiciel 13
źródło
3

Jeśli nazwa klasy testowej nie jest zgodna ze standardową konwencją nazewnictwa (podkreśloną przez @axtavt powyżej), musisz dodać wzorzec / nazwę klasy pom.xml, aby Maven mógł wybrać test -

...
<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> 
...
Saikat
źródło
2
/my_program/src/test/java/ClassUnderTestTests.java

Powinien być

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

Maven znajduje te końce testu lub rozpoczyna się od testu, aby uruchomić się automatycznie.

Możesz jednak użyć

mvn surefire:test -Dtest=ClassUnderTestTests.java 

przeprowadzić testy.

Boris Z.
źródło
2

Oto dokładny kod, który musiałem dodać do mojego 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>

A oto moje zależności:

    <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>
anon58192932
źródło
2

Napotkałem ten sam problem, został rozwiązany przez poniższą zmianę w pom.xml:

<build>
    <testSourceDirectory>test</testSourceDirectory>

...

zmienić na:

<build>
    <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
ShayneR
źródło
1

Kolejny powód, dla którego nie uruchomiłem przypadków testowych, przydarzył mi się - miałem właściwość o nazwie „test” do zupełnie innych celów, ale przeszkadzało to we wtyczce surefire. Dlatego sprawdź swoje POM-y pod kątem:

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

i usuń to.

Rusi Popow
źródło
1

Jeszcze jedna wskazówka (oprócz poprzednich odpowiedzi):

W Eclipse przejdź do Właściwości projektu> kliknij Run/Debug Settings:

„Ta strona pozwala zarządzać konfiguracjami uruchamiania z aktualnie wybranym zasobem”

Tam możesz dodać (Nowy ...) lub usunąć (Usuń) testy JU (JUnit), które masz w swoim projekcie (w src/test/javafolderze lub kursie).

datv
źródło
1

Jeśli napisałeś swoje testy w JUnit 4 i dodałeś zależności JUnit 5 do wtyczki surefire, twoje testy się nie uruchomią.

W takim przypadku po prostu skomentuj zależności JUnit 5 od wtyczki surefire:

        <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>
youhans
źródło
1

Poniższe działało dobrze dla mnie w 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>
<!-- ... -->
AS Ranjan
źródło
1

W moim przypadku jesteśmy aplikacją do migracji na wiele modułów do Spring Boot. Niestety maven nie wykonał już wszystkich testów w modułach. Nazwy klas testowych nie uległy zmianie, przestrzegamy konwencji nazewnictwa.

Na koniec pomogło, kiedy dodałem zależność surefire-junit47do wtyczki maven-surefire-plugin. Ale nie mogłem wyjaśnić, dlaczego to była próba i błąd:

<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>

Michael Hegner
źródło
1

Korzystałem z testów testowych Junit-5 z maven 3.6.2 i zawsze pokazywałem Uruchomienie testowe: 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] ------------------------------------------------------------------------

Testy Junt-5 nie działają pod linkiem maven, który uratował mi dzień.

Vijay Kumar Rajput
źródło
0

junitArtifactNamemoże być tak również w przypadku, gdy używany JUnit nie jest standardem ( junit:junit), ale na przykład ...

<dependency>
    <groupId>org.eclipse.orbit</groupId>
    <artifactId>org.junit</artifactId>
    <version>4.11.0</version>
    <type>bundle</type>
    <scope>test</scope>
</dependency>
Tuomas Kiviaho
źródło
0

W przypadku, gdy ktoś szukał i nie udało mi się go rozwiązać, miałem bibliotekę do różnych testów:

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

Kiedy zainstalowałem junit wszystko działało, mam nadzieję i pomogę w tym:

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
hizmarck
źródło
0

użyłem tego kodu

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

do mojego pom.xml, po prostu upewnij się, że tam jest plik testng

<suiteXmlFile>/Users/mac/xxx/xxx/xx.xxxx.xx/xxx.restassured.xx/testng.xml</suiteXmlFile>
Prasetyo Budi
źródło
0

Taki problem może wystąpić, gdy używasz wtyczki surfire 3.x.x + z JUnit5 i przez pomyłkę adnotuj klasę testową za pomocą @Test adnotacją z JUnit4.

Użyj: org.junit.jupiter.api.Test(JUnit5) zamiastorg.junit.Test (Junit4)

UWAGA: może to być trudne do zauważenia, ponieważ IDE może uruchamiać te problemy bez testowania JUnit4.

walkeros
źródło
0

Kolejny łatwo przeoczony problem - upewnij się, że plik twojej klasy ma rozszerzenie .java

Mark W.
źródło