Simple test case runs container resolve issues

Answered

Hi, 

I'm having issues using the new BasePlatformTestCase().

This simple test:

package security

import com.intellij.testFramework.fixtures.BasePlatformTestCase
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test

class SimpleTest: BasePlatformTestCase() {
@BeforeEach
override fun setUp() {
super.setUp()
}

@Test
fun testNothing() {
assertTrue(true)
}
}

This is causing the test case to fail with the following output. It looks like the class definition for a ServiceBus cannot be located.

kotlin/jdk7/AutoCloseableKt
java.lang.NoClassDefFoundError: kotlin/jdk7/AutoCloseableKt
at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:110)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:72)
at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:65)
at com.intellij.serviceContainer.PlatformComponentManagerImpl.getService(PlatformComponentManagerImpl.kt:288)
at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:18)
at com.intellij.util.messages.MessageBusFactory.getInstance(MessageBusFactory.java:14)
at com.intellij.util.messages.MessageBusFactory.newMessageBus(MessageBusFactory.java:24)
at com.intellij.util.messages.MessageBusFactory.newMessageBus(MessageBusFactory.java:29)
at com.intellij.serviceContainer.PlatformComponentManagerImpl.createMessageBus(PlatformComponentManagerImpl.kt:365)
at com.intellij.openapi.components.impl.ComponentManagerImpl.getMessageBus(ComponentManagerImpl.java:84)
at com.intellij.serviceContainer.PlatformComponentManagerImpl.registerComponents(PlatformComponentManagerImpl.kt:157)
at com.intellij.idea.ApplicationLoader$registerAppComponents$1.apply(ApplicationLoader.kt:115)
at com.intellij.idea.ApplicationLoader$registerAppComponents$1.apply(ApplicationLoader.kt)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1705)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: kotlin.jdk7.AutoCloseableKt
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 20 more

My Gradle configuration is:

plugins {
id 'java'
id 'org.jetbrains.intellij' version '0.4.15'
id 'org.jetbrains.kotlin.jvm' version '1.3.61'
}

group 'org.tonybaloney.security'
version '1.0.4'

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.5.2'
testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib"
}

test {
useJUnitPlatform()
dependsOn 'cleanTest'
systemProperty "idea.home.path", ideaPath
}

// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
version '2019.3.1'
type 'PY'
plugins 'python', 'yaml'
}
0
1 comment

The solution was to add this to Gradle:

testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7"
1

Please sign in to leave a comment.