我有一些像这样的代码:
class Solution {
fun strStr(haystack: String, needle: String): Int {
return haystack.indexOf(needle)
}
}
在Python中,我通常可以在同一个文件中添加一些测试,并添加如下内容:
<some tests above here>
if __name__ == '__main__':
unittest.main()
运行单元测试。我如何在Kotlin中实现同样的目标?
答案 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)
}
}