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

时间:2018-08-07 10:27:37

标签: junit kotlin

我只是从Kotlin开始,最近跟随着有关https://docs.spring.io/sts/nan/v373/SpringToolSuiteAndKotlin.html

的教程

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

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

E:\Lhasa\Workspace\Ecosystem-Java8-Master-STS-3.8.4\kotlin-demo\src\test\java\lhasa\demo\KotlinSimpleTest.kt
    ERROR: Unresolved reference: KotlinLhasaDemo (5, 19)
    ERROR: Unresolved reference: KotlinLhasaDemo (11, 14)

JUnit午餐者根本看不到Kotlin测试类(因​​为它没有被编译)。 但是,如果我运行mvn install,则mvn可以在该类上正常运行。在STS JUnit之后重新启动将再次产生错误消息,但是这次它将发现该类并在其上运行测试。 但是,Eclipse编译器将不会再次更新.kt类。 我猜JUnit启动器无法编译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);
    }
}

这是我正在调用的类(效果很好):

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

我正在使用带有Kotlin STS 0.8.6扩展名的STS 3.9.5。

0 个答案:

没有答案