在STS中的JUnit中运行Kotlin测试类时发生ClassNotFoundException
我刚从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测试类,我不知道如何修复它 这是我的测试课:在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
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)
}
}