30

如果测试与生产代码(这很常见)位于不同的模块中,那么使内部函数对测试可见的最佳方法是什么?

在Java中,我会将生产代码和测试放在同一个包中,并使待测试的方法包私有(另外,@VisibleForTest如果让它包私有而不是私有的唯一原因是测试)。不幸的是,Kotlin 没有包私有的概念。

4

2 回答 2

25

用访问修饰符标记的类和方法internal将在 Kotlin、Gradle 和 Intellij 的当前版本中工作,以便从测试类访问这些方法。这些工具将主源路径和测试源路径视为同一模块的一部分。

你已经试过了吗?如果它失败了,你应该报告一个错误,因为这已经被报告、修复并且在任何当前版本中都应该没问题。

于 2016-02-29T00:08:57.250 回答
7

可能最简单的解决方案是将取决于内部代码的单元测试与生产代码放在同一个模块中,而仅将使用公共 API 的集成测试留在单独的模块中。

这似乎是合理的,因为internal修饰符恰好意味着同一模块内的可见性。

于 2016-02-28T18:07:39.030 回答