在STS中的JUnit中运行Kotlin测试类时发生ClassNotFoundException

在STS中的JUnit中运行Kotlin测试类时发生ClassNotFoundException,junit,kotlin,Junit,Kotlin,我刚从Kotlin开始,最近学习了以下教程: 然而,在我的项目中,我将src/main/kotlin和src/test/kotlin改为src/./java。我删除了.project、.classpath、.settings和目标文件夹,并重新导入了项目,以确保eclipse具有新的配置。但是,当从STS对.kt测试类运行JUnit测试时,我遇到了一些问题。 Eclipse本身可以很好地编译类测试 我从控制台(org.jetbrains.kotlin.ui.console)收到错误: JUnit

我刚从Kotlin开始,最近学习了以下教程:

然而,在我的项目中,我将src/main/kotlin和src/test/kotlin改为src/./java。我删除了.project、.classpath、.settings和目标文件夹,并重新导入了项目,以确保eclipse具有新的配置。但是,当从STS对.kt测试类运行JUnit测试时,我遇到了一些问题。 Eclipse本身可以很好地编译类测试

我从控制台(org.jetbrains.kotlin.ui.console)收到错误:

JUnit午餐者根本看不到Kotlin测试类(因为它没有被编译)。 但是,如果我运行mvn安装,mvn在该类中运行良好。在STS JUnit之后重新启动将再次产生错误消息,但这次它将发现该类并对其运行测试。 但是,Eclipse编译器将再次看不到更新.kt类。 我猜JUnitLauncher不会编译Kotlin测试类,我不知道如何修复它

这是我的测试课:

package com.example.demo

import org.junit.Test
import org.junit.Assert.*;
import lhasa.demo.KotlinLhasaDemo

class KotlinSimpleTest {
    @Test
    fun testCallNormalKotlin()
    {
        val demo = KotlinLhasaDemo();
        demo.normalFunction();
        demo.stringFunction();
        val number = demo.incrementFunction("1");
        assertEquals("2", number);
    }
}
这是我正在调用的类(工作正常):


我正在使用STS 3.9.5和Kotlin STS 0.8.6扩展。

Kotlin被编译成标准JVM类文件,与Java一样。这就是为什么您能够在编译它们之后运行它们。主要的问题是-为什么你一开始就改变了路径?这无关紧要。若我像教程中那个样创建一个全新的项目,并在STS中修改kotlin测试类,那个么它不会自动编译到.class文件中。但是它适用于主类,所以我认为我需要将其作为bug报告。我似乎也遇到了同样的问题。你找到解决办法了吗?
package com.example.demo

import org.junit.Test
import org.junit.Assert.*;
import lhasa.demo.KotlinLhasaDemo

class KotlinSimpleTest {
    @Test
    fun testCallNormalKotlin()
    {
        val demo = KotlinLhasaDemo();
        demo.normalFunction();
        demo.stringFunction();
        val number = demo.incrementFunction("1");
        assertEquals("2", number);
    }
}
package lhasa.demo

class KotlinLhasaDemo {

    fun normalFunction() {

    }

    fun stringFunction(): String {
        return  "" // ; not required
    }

    fun incrementFunction(number: String): String {
        var i = Integer.parseInt(number)
        i++
        return Integer.toString(i)
    }
}