如果测试所在的模块与生产代码不同(这是常见的),那么使内部函数对测试可见的最佳方法是什么?
在Java中,我将生产代码和测试放在同一个包中,并使待测试的方法包私有(另外,如果获得它的唯一原因,请添加@VisibleForTest
注释package-private而不是private是测试)。不幸的是,Kotlin没有包私有的概念。
答案 0 :(得分:17)
使用internal
访问修饰符标记的类和方法将在当前版本的Kotlin,Gradle和Intellij中使用,以便从测试类访问这些方法。这些工具将主要和测试源路径视为同一模块的一部分。
你有没有试过这个?如果它失败了,你应该报告一个错误,因为这已经被报告,修复了,在任何当前版本都应该没问题。
答案 1 :(得分:6)
最简单的解决方案可能是根据生产сode在同一模块中的内部代码进行单元测试,并在单独的模块中仅保留使用公共API的集成测试。
这似乎是合理的,因为internal
modifier意味着同一模块内的可见性。