如何在同一个文件中添加单元测试Kotlin代码并运行它?

时间:2018-02-01 12:35:31

标签: unit-testing kotlin

我有一些像这样的代码:

class Solution {
    fun strStr(haystack: String, needle: String): Int {
        return haystack.indexOf(needle)
    }
}

在Python中,我通常可以在同一个文件中添加一些测试,并添加如下内容:

<some tests above here>
if __name__ == '__main__':
   unittest.main()

运行单元测试。我如何在Kotlin中实现同样的目标?

1 个答案:

答案 0 :(得分:6)

通常,测试通常被放入Kotlin / Java项目的单独模块中的原因是,测试通常需要一些对生产代码没有意义的附加依赖项,如JUnit或其他库。此外,编写在同一文件中的测试将编译为一个类,该类是生产代码输出的一部分。

在已发布并用作其他项目依赖项的项目中,请考虑不要混合生产和测试代码。

当然,您可以将这些测试依赖项添加到生产代码中。作为JUnit的示例,在IntelliJ项目中添加依赖项(在Gradle项目中:dependencies { compile 'junit:junit:4.12' }see the reference),然后添加一个带有@Test函数的测试类:

import org.junit.Test
import org.junit.Assert

class Solution {
    fun strStr(haystack: String, needle: String): Int {
        return haystack.indexOf(needle)
    }
}

class SolutionTest {
    @Test
    fun testSolution() { 
        val text = "hayhayhayneedlehayhay"
        val pattern = "needle"
        val result = strStr(text, pattern)
        Assert.assertEquals(8, result)
    }
}