Kotlin:在单元测试中使内部函数可见
如果测试与生产代码(这是常见的)在不同的模块中,测试内部函数的可见性最好的方法是什么?
在Java中,我会将生产代码和测试放在同一个包中,并使待测试的包是私有的(另外,如果将其包含为私有的而不是私有的唯一原因,请添加@VisibleForTest
注释是测试)。 不幸的是,Kotlin没有包私有的概念。
使用internal
访问修饰符标记的类和方法将在Kotlin,Gradle和Intellij的当前版本中工作,以便从测试类访问这些方法。 这些工具将主要和测试源路径视为同一模块的一部分。
你已经试过了吗? 如果它失败了,你应该报告一个错误,因为这已经被报告,修复,应该罚款任何当前版本。
可能最简单的解决方案是将您的单元测试依赖于内部代码放置在与生产环境相同的模块中,并且仅将使用公共API的集成测试留在单独的模块中。
这似乎是合理的,因为internal
修饰符意味着完全相同的模块内部的可见性。