8 votes

java.lang.ClassNotFoundException : com.intellij.junit5.JUnit5IdeaTestRunner utilise spek dans kotlin

Je suis très novice dans l'utilisation de spek en kotlin test. En utilisant spek, j'ai obtenu l'erreur suivante sur logcat. Je ne sais pas pourquoi j'ai eu cette erreur

java.lang.ClassNotFoundException: com.intellij.junit5.JUnit5IdeaTestRunner
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.intellij.rt.execution.junit.JUnitStarter.getAgentClass(JUnitStarter.java:252)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

J'ai les dépendances suivantes dans le fichier gradle

testImplementation 'junit:junit:4.12'
testImplementation 'org.jetbrains.spek:spek-api:1.1.0-beta3'
testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.0-beta3'
testImplementation 'org.junit.platform:junit-platform-runner:1.0.0-M3'

Fichier de test

import org.jetbrains.spek.api.Spek
import org.jetbrains.spek.api.dsl.given
import org.jetbrains.spek.api.dsl.it
import org.junit.Assert.assertEquals
import org.junit.platform.runner.JUnitPlatform
import org.junit.runner.RunWith

@RunWith(JUnitPlatform::class)
class ExampleUnitTest : Spek({
    val x = 2
    val y = 3

    given("x = $x and y = $y") {
        val sum = x + y

        it("should be that x + y = 5") {
            assertEquals(5, sum)
        }

        it("should be that x - y = -1") {
            val subtract = x - y
            assertEquals(-1, subtract)
        }

    }
})

Pouvez-vous s'il vous plaît suggérer, comment obtenir ce type d'erreur. J'apprécierais vos suggestions ou commentaires sur ce sujet.

9voto

guenhter Points 4460

Il suffit d'ajouter la bibliothèque qui contient le runner (voir aussi http://junit.org/junit5/docs/current/user-guide/#installation )

testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0-M3'

Je vous encourage également à mettre à jour vos spek-libs à la version la plus récente :

testImplementation 'junit:junit:4.12'
testImplementation 'org.jetbrains.spek:spek-api:1.1.2'
testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.2'
testImplementation 'org.junit.platform:junit-platform-runner:1.0.0-M5'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0-M5'

Mise à jour

Actuellement, la librairie junit la plus récente n'est pas compatible avec whte M5-Milestone, utilisez donc la version M4.

testImplementation 'org.junit.platform:junit-platform-runner:1.0.0-M4'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0-M4'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X