Home » Android » android – java.lang.ClassNotFoundException: com.intellij.junit5.JUnit5IdeaTestRunner using spek in kotlin

android – java.lang.ClassNotFoundException: com.intellij.junit5.JUnit5IdeaTestRunner using spek in kotlin

Posted by: admin June 15, 2020 Leave a comment

Questions:

I am very new using spek in kotlin testing. When using spek , got the following error on logcat. I don’t why I got this

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)

I have following dependencies on gradle file

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'

Test file

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

    }
})

Can you please suggest, how to get this kind of error. I would appericate your valuable suggation or comments on this topic.

How to&Answers:

You just have to add the library, which contains the runner (also see http://junit.org/junit5/docs/current/user-guide/#installation)

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

I encourage you also to update your spek-libs to the most recent version:

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'

Update

Currently, the most recent junit lib is not compatible with whte M5-Milestone, so use the version M4

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