2016-02-28 39 views
11

如果测试与生产代码(这是常见的)不在同一个模块中,测试内部函数的最佳方式是什么?Kotlin:在单元测试中使内部函数可见

在Java中,我会将生产代码和测试放在同一个包中,并使待测试的包是私有的(另外,如果要使包为私有的唯一原因,请添加一个@VisibleForTest注释而不是私人测试)。不幸的是,Kotlin没有package-private的概念。

+1

也许“内部”修饰符可以帮助你:https://kotlinlang.org/docs/reference/visibility-modifiers.html – marcospereira

回答

8

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

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

+0

是的,这正是我用Intellij IDEA 15试过的。检查我是IDE和Kotlin插件的最新版本,并且我的设置是正确的。 –

+0

最新的Intellij IDEA 15是15.0.4,Kotlin插件1.0.0 –

+0

它现在工作正常,我甚至没有安装任何更新。我以前可能做错了事,并且感到困惑。很酷,它的工作!谢谢。 –

6

可能最简单的解决方案是将您的单元测试依赖于内部代码放在与生产环境相同的模块中,并且在独立模块中只保留使用公共API的集成测试。

这似乎是合理的,因为internal modifier意味着完全相同的模块内的可见性。

相关问题