Eclipse Nenhum teste encontrado usando JUnit 5 causado por NoClassDefFoundError para LauncherFactory

99

O problema

Sempre que executo o teste JUnit em meus projetos (usando JUnit 5 com Java 9 e Eclipse Oxygen 1.a), encontro o problema de que o eclipse não consegue encontrar nenhum teste.

A descrição

Na configuração de execução, o eclipse não consegue nem encontrar o método que está anotado com @Test, mas em vez disso só me mostra " (todos os métodos) ". Espero que a imagem a seguir dê uma ideia melhor da minha configuração:

https://imgur.com/a/FTe9c

Saída do console:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

O que eu tentei até agora

Eu ja tentei

  • para remover a pasta de teste do caminho de construção e adicioná-la novamente.
  • para iniciar o teste passando o mouse sobre o método anotado com @Test e clique em "Executar como teste JUnit".
  • remover JUnit do Buildpath e adicioná-lo novamente
  • reinicie o eclipse
  • Eu também movi todo o projeto de uma máquina para outra e tentei com a instalação do Eclipse fornecida lá
  • para renomear o método de teste.
  • redigitar a anotação @Test

Algumas dessas etapas podem ser encontradas aqui , mas no final o problema permaneceu.

ShadowDragon
fonte
Mas você tentou descobrir a diferença conforme declarado na resposta a isso - stackoverflow.com/questions/34413/… ?
Naman

Respostas:

22

Você encontrou o bug 525948 do Eclipse, que já foi corrigido e será publicado na próxima versão Oxygen.3 (4.7.3), 21 de março de 2018.

Como solução alternativa, coloque seu código de teste em um projeto separado e adicione o projeto em teste ao caminho de módulo, mas não adicione um module-info.javaao seu projeto de teste. Com sua nomenclatura de projeto, classe e módulo, deve ser parecido com isto:

insira a descrição da imagem aqui

Veja também meu vídeo que mostra o Java 9 e o JUnit 5 no Eclipse Oxygen.1a em ação

uivar
fonte
1
@nullpointer, quero dizer criar um novo projeto Java que não seja modular (não tem module-info.java). No Eclipse, um projeto Java tem uma única pasta de saída e, portanto, pode conter apenas uma ou nenhuma module-info.java. Mas você pode adicionar módulos ao caminho de módulo do projeto, mesmo que o projeto não seja modular (não tenha module-info.java).
howlger
1
@ShadowDragon a desvantagem desse hack é que precisamos de um nome de pacote diferente para as classes de teste, portanto, não podemos fazer o teste privado do pacote
kleopatra
7
Acabei de instalar o Oxygen.3 (4.7.3) e o problema persiste.
user118967,
2
@chomp Se você tiver 09/2018, é um problema diferente, mesmo que os sintomas sejam semelhantes. Se nenhum teste foi encontrado, isso se deve principalmente a um caminho de classe / módulo incorreto ( Projeto> Propriedades: Caminho de construção Java ).
Howlger
2
@howlger Obrigado. Depois de atualizar para a versão mais recente, esse problema desapareceu. Obrigado novamente por sua ajuda :).
Data de
136

Corrigi o problema clicando com o botão direito do mouse no teste e selecionando 'Executar configurações' e alterando a seleção "Executor de teste:" para 'JUnit 4' conforme mostrado aqui:

Captura de tela de configurações de execução

Fiz o teste novamente e funcionou.

stringVector
fonte
13
É engraçado que selecione "JUnit4" nas configurações de execução ao usar JUnit5. Não vou chamar isso de uma boa solução na qual posso confiar enquanto estou lidando com um grande projeto.
Levent Divilioglu
2
Também considero esta solução suspeita, falta até uma explicação de porque funciona e quais os riscos que se pode correr.
Amadán
Se isso não resolver o problema para você, vá para a guia classpath na mesma janela e adicione JUnit às Bibliotecas Bootstrap.
Abhi
Obrigado; selecionar JUnit 4 resolveu meus problemas. Por enquanto, é a maneira mais simples de resolver o problema.
Tes
Na minha opinião essa solução menos invasiva, ou seja, sem modificar o código-fonte.
Rafael Rocha
65

Tenho o mesmo problema com o STS 3.9.1. Parece um bug do Eclipse, no entanto, para corrigir isso, você pode adicionar uma dependência de teste junit-platform-launcherao seu projeto ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Foi assim que fiz para o meu projeto que usa o Gradle:

dependencies {
    // other stuff here

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
    testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}

arquivo gradle.properties:

junit5MinorVersion=1.0

Acredito que o mesmo se aplica se você vir essa exceção ao usar o IntelliJ IDEA.

Andrii Karaivanskyi
fonte
1
Se estiver usando o gradle, geralmente ele vai para build.gradle. Se você estiver usando o maven, é pom.xml. O formato do maven é diferente.
Andrii Karaivanskyi
1
Isso resolveu para mim. Obrigado!
Chris
4
Aqui está o snippet pom.xml para acessar <dependencies>: <dependency> <groupId> org.junit.jupiter </groupId> <artifactId> junit-jupiter-engine </artifactId> <version> 5.1.0 </version> <scope> test </scope> </dependency> <dependency> <groupId> org.junit.platform </groupId> <artifactId> junit-platform-launcher </artifactId> <version> 1.1.0 </version> < scope> test </scope> </dependency>
user118967
1
Mesmo assim, adicionar junit-platform 1.1.0 não funcionou para mim. Ele mostra a mesma mensagem "Nenhum teste encontrado com o executor de teste usando JUnit 5" "
P Satish Patro
2
@PSatishPatro Depois de adicionar o acima. Você precisa executar a configuração para esse caso de teste Junit e, em seguida, ir para a guia Classpath-> Avançado-> Adicionar Biblioteca-> OK-> Junit-> Concluir. Em seguida, vá em frente e execute-o. Isso adicionará a biblioteca durante a execução do Junit
Jaison Varghese
28

No meu caso, o problema era eu mesmo e nenhum IDE como o Eclipse. Importei a classe de teste JUnit 4.

Portanto, NÃO importe este:

import org.junit.Test  // JUnit 4

Mas IMPORTE aquele:

import org.junit.jupiter.api.Test // JUnit 5
armin.miedl
fonte
Eu estava alternando entre JUnit 4 e 5 porque o projeto atual está usando JUnit 5, mas ao relatar bugs para o Hibernate etc. Eu preciso alternar para JUnit 4. Acabei acidentalmente mixando as importações. 🤦‍♂️
Kawu
21

As respostas até agora não abordaram o problema de compartilhar código com outras pessoas que não necessariamente usam o Eclipse. Aqui está uma proposição. A chave é usar um perfil maven para resolver o caso Eclipse.

Ele assume que você definiu uma propriedade junit5.versionem seu pom como:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit5.version>5.1.1</junit5.version>
</properties>

em seguida, na profilesseção, adicione o seguinte:

<profiles>
    <profile>
        <id>eclipse</id>
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit5.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-launcher</artifactId>
                    <version>1.1.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </profile>
</profiles>

Tudo o que você precisa fazer depois disso é selecionar o perfil em seu Eclipse local: Clique com o botão direito em seu projeto e selecione Maven > Select Maven Profiles...(ou pressione Ctrl+ Alt+ P) e, em seguida, verifique o perfil "eclipse" que acabamos de criar.

Seleção do perfil Maven

Com isso você terminou. Seu Eclipse executará testes Junit 5 conforme o esperado, mas a configuração que você adicionou não poluirá outras construções ou outros IDE

Aldian
fonte
14

Adicionar essa dependência maven com JUnit Jupiter (v.5.5.1) resolve o problema.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>
hbhattac
fonte
Eu tinha um projeto JAR criado para Spring Boot 2.x que trazia o JUnit 5. Eu adicionei essa dependência e parece que a corrigiu. Obrigado!
David Bradley
14

CORREÇÃO SIMPLES: (Adicionar biblioteca JUnit 5)

INSTRUÇÕES:

  • Clique com o botão direito do mouse em projeto -> Caminho de construção -> Configurar caminho de construção
  • No pop-up -> Adicionar Biblioteca -> JUnit -> JUnit 5 -> Concluir -> Aplicar
  • Você deve ver a Biblioteca JUnit 5 (e seus jars) adicionada ao seu projeto
  • Clique com o botão direito do mouse em projeto -> Maven -> Atualizar projeto -> OK
Jerry Carney
fonte
9

Nenhuma das soluções ajudou:

O problema é que o Eclipse 2018-12 tem suporte para JUnit 5.3.1. Se você começar com uma versão anterior, ele irá falhar.

Portanto, certifique-se de usar pelo menos 5.3.1.

5.4.0 também funciona.

No caso de seu pom pai ser Spring Boot, você precisa se certificar (no gerenciamento de dependências) que junit-jupiter-api está configurado para a mesma versão. Você não precisa do junit-platform-runner ou -launcher !

T3rm1
fonte
2
Obrigado pela dica. Estou usando o 2019-3 e adicionei uma propriedade <junit-jupiter.version>5.4.1</junit-jupiter.version>para substituir a versão usada na inicialização do Spring (2.1.3.RELEASE).
Ritesh
3
Este foi o único que consertou para mim. Removi a dependência -launcher e começou a funcionar. (eclipse 2019-09 e junho 5.4.2)
Raymond
Essa solução também funciona para mim. No entanto, no meu caso, mudei de 5.3.1 para 5.5.1 e o junit-platform-engine para 1.5.1.
Arwan Khoiruddin
1
Isso consertou para mim. No eclipse 2020-03, os testes não começaram com a versão 5.5.2 do junit, mas sim com a 5.6.0. Como uma atualização geral para sua resposta: Pode ser necessário usar pelo menos a versão junit que o eclipse usa.
Lars Briem,
8

Seguindo a resposta de Andrii Karaivanskyi, aqui está a declaração Maven POM:

<properties>
    ...
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

ATUALIZAR

De acordo com o comentário de Alexander Wessel, você pode usar org.junit: junit-bom conforme descrito em sua resposta à pergunta Eclipse Nenhum teste encontrado usando JUnit 5 causado por NoClassDefFoundError para LauncherFactory .

Gerold Broser
fonte
1
Não declare propriedades para as versões de júpiter e plataforma, use o BOM . Basicamente, adicione uma dependência no BOM na tag dependencyManagement com e scope=import type=pom, em seguida, adicione dependências ao junit-platform-launcher e junit-jupiter-engine no escopo do teste, sem fornecer uma versão na seção de dependências. O BOM sempre garantirá que você tenha apenas uma versão da plataforma JUnit e do Jupiter no caminho de classe e que as respectivas versões sejam as pretendidas (por exemplo, 5.2.0 com 1.2.0).
Alexander Wessel
@AlexanderWessel Não tenho BOM. Este é apenas um exemplo de quais dependências devem ser declaradas com o Maven, onde quer que seja.
Gerold Broser
1
não é se você tem (ou melhor, seu projeto tem) um BOM em si. Eu estava explicando que, ao importar o BOM que o JUnit 5 fornece , você pode garantir que as versões do Junit Jupiter e da plataforma Junit são compatíveis e não precisará declarar uma versão nas dependências individuais, portanto, também não precisará declarar a versão propriedades. Para ser claro: Seu exemplo faz o trabalho bem. Mas importar o JUnit BOM é um pouco mais elegante (na minha humilde opinião) e, em algumas circunstâncias, mais seguro.
Alexander Wessel
7

Para sua informação, outra causa de "Nenhum teste encontrado usando junit5" é (inadvertidamente ou intencionalmente) declarar os casos de teste "privados":

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

Eles precisam ser públicos.

Mike B
fonte
7

Eu também enfrentei o mesmo problema, você só precisa adicionar a biblioteca, a Biblioteca Junit já é fornecida com o Eclipse, então você só precisa seguir abaixo

Caminho de construção> Configurar caminho de construção> biblioteca> Adicionar biblioteca> JUnit> Avançar> terminar

Funciona para mim

Alok Ranjan
fonte
Funcionou bem em eclipse. Versão: 2020-06 (4.16.0) ID de compilação: 20200615-1200
OJVM
4

Eu tive o mesmo problema depois de criar um novo TestCase: Eclipse -> Novo -> Caso de Teste JUnit. Ele cria uma classe sem modificador de nível de acesso. Eu poderia resolver o problema simplesmente colocando um público antes da palavra-chave class .

du-it
fonte
A classe e o método exigiam uma palavra-chave pública. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi
4

Desde o início, a mensagem de erro informa que a classe não foi encontrada: NoClassDefFoundErrorisso significa que o PATH para junit é o problema.

  1. Clique com o botão direito na pasta do projeto e escolha Propriedades OU selecione a pasta do projeto e pressione a combinação cmd + i.

  2. selecione na lista "Caminho de construção Java".

  3. selecione a guia "Bibliotecas"
  4. Se JUnit 5 (ou JUnit 4) for adicionado ao "Modulepath", selecione "JUnit 5" e pressione Remover.
  5. selecione "Classpath", pressione "Add Library ...".
  6. na janela "Adicionar biblioteca" aberta, selecione JUnit e pressione próximo.
  7. Selecione a versão da biblioteca JUnit necessária e pressione Concluir.

Isso é tudo. Tente executar o teste novamente.

Ion Timotin
fonte
4

você deveria saber disso :

@Before de junit4 vai com @Test: " importação org.junit.Test "

E

@BeforeEach de Junit5 vai com: " import org.junit.jupiter.api.Test "

Portanto, certifique-se de usar as importações da mesma versão do Junit, caso contrário, não funcionará, eu acho.

Y.halaoui
fonte
3

Usando o STS 3.9.1, tive o mesmo problema. No entanto, atualmente não preciso de nenhum recurso novo do JUnit5, então tentei forçar o uso de uma versão mais antiga. Se estiver usando o maven, você pode adicionar as seguintes dependências ao seu pom.xml:

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

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

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

Isso funcionou para mim (pelo menos contanto que eu não precise do JUnit5 explicitamente).

mahe
fonte
Por que você adicionou "org.junit.vintage" se está usando JUnit5? É apenas para compatibilidade com versões anteriores (como usar o antigo JUnit) AFAIK.
Levent Divilioglu
Porque com aquele projeto e o STS 3.9.1 eu não pude / não usei JUnit5, mas JUnit4.
mahe
3

Como todos informaram que é um bug do IDE, tentei no Eclipsee STS. Em ambos os casos, está falhando.

Como solução alternativa, resolvi modificando o arquivo pom.xml como abaixo.

Eu adicionei essas duas dependências de maven junit-jupiter-enginee junit-platform-launcher.

pom.xml

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Além disso, certifique-se de adicionar a versão de ambas as dependências do maven na tag de propriedades.

<properties>
    <java.version>1.8</java.version>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
</properties>
Arvind Katte
fonte
1
Adicionar a dependência junit-platform-launcher resolveu o problema para mim. Obrigado
Venkatesh Manohar
3

Estou usando o eclipse 09/09/2019.

Tive que atualizar a versão do junit-bom para pelo menos 5.4.0. Eu já tinha 5.3.1 e isso causava os mesmos sintomas do OP.

Minha configuração agora é:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.5.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
Caroço
fonte
outra opção é adicionar <junit-jupiter.version> 5.4.0 </junit-jupiter.version> às propriedades do pom
Uri Loya
2

Como não é possível postar blocos de código em comentários, aqui está o modelo POM que estou usando em projetos que requerem JUnit 5. Isso permite construir e "Executar como teste JUnit" no Eclipse e construir o projeto com Maven simples.

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>group</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project name</name>

    <dependencyManagement>
      <dependencies>
        <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.1</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

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

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <!-- only required when using parameterized tests -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
</project>

Você pode ver que agora você só precisa atualizar a versão em um lugar se quiser atualizar o JUnit. Além disso, o número da versão da plataforma não precisa aparecer (em uma versão compatível) em nenhum lugar do seu POM, ele é gerenciado automaticamente por meio da junit-bomimportação.

Alexander Wessel
fonte
2

Estou a usar:

Spring Tool Suite 4 Versão: 4.4.2.RELEASE Build Id: 201911201053 Java versão: 1.8.0_191

e a mensagem exibida é Nenhum teste encontrado com o executor de teste 'JUnit5'

o que funcionou para mim foi a configuração abaixo

    <properties>
        <java.version>1.8</java.version>
        <junit-jupiter.version>5.5.2</junit-jupiter.version>
        <junit-platform.version>1.5.2</junit-platform.version>
    </properties> 

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
ukaliko
fonte
2

Está faltando o iniciador da plataforma JUnit 5 com grupo: 'org.junit.platform', nome: 'junit-platform-launcher'

Basta adicionar seu POM:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>
Ravi Ranjan
fonte
1

Mesmo erro que encontrei na versão do eclipse Oxygen.3a Release (4.7.3a). Há um problema de incompatibilidade de dependências do Maven. Para resolver, atualizei meu Pom.xml com as seguintes dependências.

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiopractice JunitAndMactioPractice 0.0.1-SNAPSHOT

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <junit.jupiter.version>5.1.1</junit.jupiter.version>
    <junit.platform.version>1.1.1</junit.platform.version>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Harpreet Singh
fonte
Você já viu o Guia do usuário JUnit 5 sobre junit-platform-runner: " Executor para executar testes e suítes de teste na plataforma JUnit em um ambiente JUnit 4. "
Gerold Broser
1

Você pode usar somente junit-jupitercomo uma dependência de teste em vez de junit-jupiter-api, junit-platform-launcher, junit-jupiter-engine.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>
Aly Radwan
fonte
1
Esta solução funcionou para mim com JUnit 5.6.2, Java 11 (e eclipse 2020-03 / 4.15.0)
coseos
1

Para mim, configurei o caminho de construção para adicionar a biblioteca JUnit 5 e também adicionando a dependência

     <dependency> 
        <groupId>org.junit.platform</groupId> 
        <artifactId>junit-platform-launcher</artifactId> 
        <version>1.1.0</version> 
        <scope>test</scope> 
     </dependency>

separadamente.

Dineshotham Kumar Khambhammett
fonte
1

Eu também enfrentei esse problema com o Eclipse (versão: 2019-12 (4.14.0)). A solução parece usar IntelliJ ou usar o teste Maven para executar tais testes no Eclipse.

Srini Ramjee
fonte
1

substituir:

import org.junit.Test;

com:

import org.junit.jupiter.api.Test;
Vikash Kumar
fonte
1

Na verdade, usei spring-tool-suite-4-4.5.1 e tive esse bug quando quero executar uma aula de teste. e a solução foi adicionar ao 'java build path', 'junit5' em Bibliotecas

insira a descrição da imagem aqui

fatima fahmi
fonte
0

você deveria mudar

@Test
public static void testmethod(){}

para

@Test
public void testmethod(){}

o @Test é um método estático incompatível

Aegon
fonte
0

Encontrei o mesmo erro e, no meu caso, foi uma simples questão de ir Project Properties > Maven > Update projecte / ou limpar e reconstruir o projeto.

Luke Hutchison
fonte
0

Acabei de adicionar meu Test.class via menu eclipse e funcionou. Clique com o botão direito para projetar -> Novo -> Outro -> JUnit -> Caso de Teste JUnit

Sou Lee
fonte
0

Isso pode ser causado pela versão de junit-platform-launcher / junit-platform-runner.

1.1.0 não funciona

1.4.1 funciona na minha configuração.

Eu acho que este é um bug no eclipse, pois está trabalhando com bibliotecas de versão superior do junit e não outra versão.

Isso resolveu meu problema. A outra resolução parecia menos viável ou arriscada para mim. Obrigado.

Swarup Das
fonte