首页 > 解决方案 > 在 git bash 中编译我的 Kotlin 测试

问题描述

我正在尝试在 git bash 中运行我的代码,这样我就不必在 Intellij 中运行它。它在 Intellij 中运行平稳,但是当我尝试在 gitbash 中编译它时给我带来了问题。

这是我能够在 Intellij 中运行的代码主体。当我在 Intellij 中运行代码时,代码运行并且测试通过。

import org.junit.jupiter.api.*
import testCases.TestCases
import testCases.BaseUser


@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation::class)
class AllTests : BaseUser() {

    @BeforeAll
    @Throws(Exception::class)
    fun initAll() {
        this.initialize()
    }

    @Test
    @Order(1)
    fun runAllTests(){

        try{
            TestCases()

        }catch(ex: Exception){
            Assertions.fail<Any>()
        }
    }
}

我正在尝试通过在 git bash 中执行此操作来运行和编译它:

kotlinc AllTests.kt -include-runtime -d tests.jar

我不断看到多个错误并且不确定如何解决它们:

AllTests.kt:1:12: error: unresolved reference: junit
import org.junit.jupiter.api.*
           ^
AllTests.kt:2:8: error: unresolved reference: testCases
import testCases.*
       ^
AllTests.kt:5:2: error: unresolved reference: TestInstance
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 ^
AllTests.kt:5:15: error: unresolved reference: TestInstance
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
              ^
AllTests.kt:6:2: error: unresolved reference: TestMethodOrder
@TestMethodOrder(MethodOrderer.OrderAnnotation::class)
 ^
AllTests.kt:6:18: error: unresolved reference: MethodOrderer
@TestMethodOrder(MethodOrderer.OrderAnnotation::class)
                 ^
AllTests.kt:7:18: error: unresolved reference: BaseUser
class AllTests : BaseUser() {
                 ^
AllTests.kt:9:6: error: unresolved reference: BeforeAll
    @BeforeAll
     ^
AllTests.kt:12:14: error: unresolved reference: initialize
        this.initialize()
             ^
AllTests.kt:15:6: error: unresolved reference: Test
    @Test
     ^
AllTests.kt:16:6: error: unresolved reference: Order
    @Order(1)
     ^
AllTests.kt:20:13: error: unresolved reference: TestCases()
            TestCases()
            ^
AllTests.kt:33:13: error: unresolved reference: Assertions
            Assertions.fail<Any>()
            ^

标签: kotlingradlecompilationgit-bashintellij-14

解决方案


它在 IntelliJ 中运行,因为 IntelliJ 知道 junit 的 jar 文件所在的位置,因此它将其包含在运行测试的路径中。你需要做同样的事情。

您可以使用该-classpath选项进行操作

kotlinc AllTests.kt -include-runtime -classpath /path/to/junit.jar:/path/to/other.jar -d tests.jar

如果您在 Windows 上,请将您的 jar 分开,;而不是:.


推荐阅读