O Maven não encontra testes JUnit para executar

416

Eu tenho um programa maven, ele compila bem. Quando executo, mvn testele não executa nenhum teste (no cabeçalho TESTs diz There are no tests to run.).

Eu recriei esse problema com uma instalação super simples que incluirei abaixo, bem como a saída quando executada -X.

Os testes de unidade são bem executados no eclipse (ambos com seu pacote junit padrão e quando eu incluo o junit.jar baixado pelo maven). Além disso, o mvn test-compilecria corretamente a classe em classes de teste. Estou executando isso no OSX 10.6.7 com Maven 3.0.2 e java 1.6.0_24.

Aqui está a estrutura de diretórios:

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

Fim do teste 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
fonte

Respostas:

667

Por padrão, o Maven usa as seguintes convenções de nomenclatura ao procurar testes para executar:

Se sua classe de teste não seguir essas convenções, renomeie-a ou configure o Maven Surefire Plugin para usar outro padrão para as classes de teste.

axtavt
fonte
4
Acho mais atraente alterar a configuração do maven. Essa convenção de nomenclatura representa algum perigo para usuários não-experientes. Nomear seus casos de teste como SomethingTest1, SomethingTest2 faria com que os testes silenciosamente não fossem executados. O Maven não pode fazer isso para compatibilidade com versões anteriores, mas aplica mais lógica para procurar casos de teste em todos os arquivos.
Tobias Kremer
8
Eu nunca soube disso - tive dois casos que terminaram com "Tests", e o maven se recusou a executá-los ... mudou para "Test", e tudo está bem na guilda dos pirulitos novamente. Obrigado.
Demaniak
2
@ Tobias Concordo com o seu ponto de vista sobre o perigo imposto pela convenção de nomenclatura. Isso também quebra o padrão implícito no uso de anotações. Um resultado implícito do uso de anotações é que as classes / métodos que possuem uma anotação específica podem ser pesquisadas. Eu esperava que o Maven não implementasse a restrição da convenção de nomenclatura e, em vez disso, dependesse apenas da verificação dos métodos anotados pelo @Test em qualquer classe.
Angad
2
Observe que a documentação do surefire agora afirma que **/*Tests.javaé uma inclusão padrão!
Gareth
11
Pergunta: Então, por que anotar com @test se você precisa seguir a convenção Teste *?
Dynex 31/07/18
88

Também descobri que o código de teste da unidade deve ser colocado na pasta de teste, não pode ser reconhecido como classe de teste se você o colocar na pasta principal. por exemplo.

Errado

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

Direita

/my_program/src/test/java/MyTest.java
Robin Ma
fonte
3
Thaaank você! Isso e definir o escopo para test ( <scope>test<scope>) no pom.xmlarquivo fez isso por mim.
Dinesharjani
Corri para isso, cuidado com os testes vs teste. O correto é teste
Bruck Wubete
72

Outra coisa que pode fazer com que o Maven não encontre os testes se a embalagem do módulo não for declarada corretamente.

Em um caso recente, alguém fez <packaging>pom</packaging>e meus testes nunca foram executados. Eu mudei para <packaging>jar</packaging>e agora funciona bem.

Jon
fonte
4
Excelente sugestão! Demonstra os perigos de 'copiar e colar' ao dividir um artefato Maven de módulo único em vários.
morsor
4
Desejo que o maven imprima uma mensagem - package type is pom - so not running tests- para dar uma pista aos desenvolvedores :(
Arun Avanathan
60

ATUALIZAR:

Como @scottyseus disse nos comentários, a partir do Maven Surefire 2.22.0, o seguinte é suficiente:

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

Ao usar o JUnit 5, encontrei o mesmo problema. O Maven Surefire precisa de um plug-in para executar os testes do JUnit 5. Adicione isto ao nosso 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>

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

teyzer
fonte
Estou recebendo um "não encontrado" para junit-platform-surefire-provider.
Arya Pourtabatabaie
2
Observe que, com o Surefire 2.22, não deve ser necessário adicionar dependências nos artefatos surefire-providerou jupiter-engine. Meus testes parecem correr bem sem eles, pelo menos. veja esta resposta .
Scottysseus
Também é importante notar que você deve usar em org.junit.jupiter.api.Testvez de org.junit.Testusar este plug-in ou os testes não serão encontrados.
austin_ce
30

Além disso, verifique se o diretório de classes de teste (por exemplo, src / test / java) corresponde ao diretório listado na propriedade <testSourceDirectory>no seu pom.xml, na <build>propriedade Levei um tempo para encontrar isso.

t3rmin41
fonte
13

O Maven não executará seus testes se o projeto tiver <packaging>pom</packaging>

Você precisa definir o empacotamento para jar (ou algum outro tipo de artefato java) para que os testes sejam executados: <packaging>jar</packaging>

robjwilkins
fonte
12

No meu caso, estava adicionando o junit-vintage-engine, o que o torna compatível com a versão mais antiga dos testes JUnit e pode executá-los. Como eu estou usando o JUnit 5.

<dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <scope>test</scope>
</dependency>
Duc Tran
fonte
Eu acho que o SpringBoot inclui apenas o que ele usa. Faz sentido que você precise especificar suas dependências de acordo com suas necessidades. Caso contrário, você estará importando várias bibliotecas que não usa.
Duc Tran
12

Muitas dessas respostas foram úteis para mim no passado, mas eu gostaria de adicionar um cenário adicional que me custou algum tempo, pois pode ajudar outras pessoas no futuro:

Certifique-se de que as classes e métodos de teste sejam públicos.

Meu problema era que eu estava usando um recurso de geração automática de classe / métodos de teste do meu IDE (IntelliJ) e, por algum motivo, ele os criou como pacote-privado. Acho que é mais fácil perder do que se poderia esperar.

João Matos
fonte
1
Este é o problema que também tive, por algum motivo o IntelliJ está criando testes como pacotes privados e o Maven não pode vê-los. Alterar a classe e o método @Test para public made maven executa os testes.
precisa saber é
Resolvido meu problema! Observe que isso não se aplica ao JUnit 5+. Eu acho que o gerador de código do IntelliJ assume que você está usando a versão mais recente.
lamino
@lamino eu estava usando junit5 e foi falhando porque o meu método de teste não era público
SudhirKumar
Um atrevido pouco de IntelliJ para me dizer que os métodos podem ser pacote-privadas ..
Wecherowski
9

Verifique se (para o jUnit - 4.12 e o plugin Eclipse surefire)

  1. Adicione a versão necessária do jUnit no POM.xml nas dependências. Faça Maven -> Atualize o projeto para ver os frascos necessários exportados no projeto.
  2. A classe de teste está na pasta src / test / java e nos subdiretórios desta pasta (ou a pasta base pode ser especificada no POM na configuração testSourceDirectory). O nome da classe deve ter a palavra 'Teste'.
  3. O método de teste na classe de teste deve ter a anotação @Test
Mitra
fonte
1
Isso é mais um problema de configuração do java, mas, além de nomear a classe de teste corretamente e colocar o arquivo de teste no diretório de teste em src, o nome do pacote da classe de teste deve corresponder ao nome do pacote da classe que você está testando.
Paul
2
@ Paul False - O Maven executará todas as classes correspondentes à convençãosrc/test/java . A convenção de pacotes é para estrutura e para permitir o acesso de testes a métodos privados de pacotes.
Michael K
9

Descoberto se você prefixar um teste com 'Resumo', ele também será ignorado por padrão.

user1016765
fonte
1
maven.apache.org/guides/getting-started `` `E o padrão exclui são: * / Abstract Test.java * / Abstract TestCase.java` ``
Antoine Meyer
Também parece ignorar */TestAbstractSomeClassName.java.
Collin Krawll
6

Eu luto com esse problema. No meu caso, não estava importando a anotação correta no @Test .

1) Verifique se o @Test é do org.junit.jupiter.api.Test (se você estiver usando o Junit 5).

2) Com o Junit5 em vez de @RunWith(SpringRunner.class), use@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
fonte
4

Se você possui um aplicativo Java / Groovy compartilhado e tudo o que possui são testes de unidade do Groovy, o Maven não encontrará nenhum teste. Isso pode ser corrigido adicionando um teste de unidade em src / test / java.

bruce szalwinski
fonte
4

Eu também tive um problema semelhante, depois de explorar descobri que a dependência do testng está causando esse problema. Depois de remover a dependência testng do pom (como eu não preciso mais dele), ele começou a funcionar bem para mim.

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8</version>
        <scope>test</scope>
    </dependency>
rajesh madhavan
fonte
4

Se você criou um Spring Bootaplicativo usando o Spring Initializr , os testes estão sendo executados corretamente no Intellij Idea. Mas, se tentar executar testes a partir de uma linha de comando:

mvn clean test

Você pode ter se surpreendido por não ter realizado nenhum teste. Eu tentei adicionar surefire pluginsem sorte. A resposta foi simples: pom.xmlcontinha a seguinte dependência:

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

A exclusão,, junit-vintage-engineé dedicada a manter a compatibilidade com versões anteriores JUnit 4.x. Portanto, novas versões do Spring Boot Initializr não o suportam por padrão. Depois que eu removi a exclusão, Mavencomecei a ver os testes do projeto.

Exterminador13
fonte
3

Se o nome da sua classe de teste não seguir a convenção de nomenclatura padrão (conforme destacado por @axtavt acima), você precisará adicionar o nome do padrão / classe pom.xmlno para que o Maven faça o teste -

...
<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
fonte
2
/my_program/src/test/java/ClassUnderTestTests.java

deveria estar

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

O Maven encontra o teste final ou inicia com o teste para executar automaticamente.

No entanto, você pode usar

mvn surefire:test -Dtest=ClassUnderTestTests.java 

para executar seus testes.

Boris Z.
fonte
2

Aqui está o código exato que tive que adicionar ao meu 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>

E aqui estão minhas dependências:

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

Eu enfrentei o mesmo problema, resolvido pela alteração abaixo no pom.xml:

<build>
    <testSourceDirectory>test</testSourceDirectory>

...

alterado para:

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

Outro motivo para não executar os casos de teste aconteceu comigo - eu tinha uma propriedade chamada "test" para propósitos completamente diferentes, mas interferia no plug-in surefire. Portanto, verifique seus POMs para:

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

e remova-o.

Rusi Popov
fonte
1

Mais uma dica (além das respostas anteriores):

No Eclipse, vá para Propriedades do seu projeto> clique em Run/Debug Settings:

"Esta página permite gerenciar configurações de inicialização com o recurso atualmente selecionado"

Lá você pode adicionar (Novo ...) ou remover (Excluir) quaisquer testes de JU (JUnit) que você tiver no seu projeto (na src/test/javapasta ou curso).

datv
fonte
1

Se você escreveu seus testes no JUnit 4 e adicionou dependências do JUnit 5 ao plug-in surefire, seus testes não serão executados.

Nesse caso, basta comentar as dependências do JUnit 5 no plugin 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
fonte
1

A seguir funcionou muito bem para mim no dia 5 de junho

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

No meu caso, somos aplicativos de migração de múltiplos módulos para o Spring Boot. Infelizmente, o maven não executou mais todos os testes nos módulos. A nomeação das Classes de Teste não mudou, estamos seguindo as convenções de nomeação.

No final, ajudou, quando adicionei a dependência surefire-junit47ao plugin maven-surefire-plugin. Mas não pude explicar por que foi tentativa e erro:

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

Eu estava executando os casos de teste do Junit-5 com o maven 3.6.2 e estava sempre mostrando a execução do teste: 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] ------------------------------------------------------------------------

Os testes Junt-5 não estão sendo executados sob o link do maven salvo no meu dia.

Vijay Kumar Rajput
fonte
0

junitArtifactNametambém pode ser o caso se o JUnit em uso não for o padrão ( junit:junit), mas por exemplo ...

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

Caso alguém tenha pesquisado e eu não o resolva, eu tinha uma biblioteca para diferentes testes:

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

Quando instalei o junit, tudo funcionou, espero e ajudo isso:

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
hizmarck
fonte
0

eu usei usando esse código

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

no meu pom.xml, apenas garanta que o arquivo testng seja específico

<suiteXmlFile>/Users/mac/xxx/xxx/xx.xxxx.xx/xxx.restassured.xx/testng.xml</suiteXmlFile>
Prasetyo Budi
fonte
0

Esse problema pode ocorrer quando você usa o plug-in surfire 3.x.x + com o JUnit5 e, por engano, anota a classe de teste com a @Testanotação do JUnit4.

Use: org.junit.jupiter.api.Test(JUnit5) em vez de org.junit.Test(Junit4)

NOTA: isso pode ser difícil de notar, pois o IDE pode executar esses problemas sem o teste JUnit4.

walkeros
fonte
0

Outro problema facilmente esquecido - verifique se o arquivo da sua classe tem a extensão .java

Mark W
fonte