2017-07-05 7 views
7

Jestem bardzo nowy użyciu Spek w Kotlin testowania. Używając spek, otrzymałem następujący błąd na logcat. Nie wiem dlaczego mam tenjava.lang.ClassNotFoundException: com.intellij.junit5.JUnit5IdeaTestRunner użyciu Spek w Kotlin

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) 

Mam następujące zależności na Gradle plik

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' 

plik testowy

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

    } 
}) 

można zasugerować, jak uzyskać tego rodzaju błędu . Przedstawiłbym twoje cenne sugestie lub komentarze na ten temat.

+0

hi, może to jest przydatne dla Ciebie: http://spekframework.org/docs/latest/#_android –

Odpowiedz

9

Po prostu trzeba dodać do biblioteki, która zawiera runner (patrz również http://junit.org/junit5/docs/current/user-guide/#installation)

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

Zachęcam również zaktualizować Spek-libs do najnowszej wersji:

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' 

Aktualizacja

Obecnie najnowsza junit lib nie jest zgodna z M5-Milestone, więc użyj wersja M4

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

Dzięki za uratowanie mojego czasu, test przeszedł pomyślnie wydaje, ale mam pewne ostrzeżenia: * * OSTRZEŻENIE: TestEngine z identyfikatorem 'junit-jupiter' nie wykrył testu ** i ** OSTRZEŻENIE: TestEngine z ID 'junit-jupiter' nie wykrył testów ** i tak dzięki. –

+1

Zaktualizowałem ci powyższy opis. Jeśli obniżysz wersję z M5 do M4, to działa. – guenhter

+0

@guenhter DZIĘKUJĘ !! – w3bshark

Powiązane problemy