Kotlin:在unit testing中使内部函数可见
如果测试与生产代码(这是常见的)在不同的模块中,测试内部函数的可见性最好的方法是什么?
在Java中,我会将生产代码和测试放在同一个包中,并使待测试的包是私有的(另外,如果将其包含为私有的而不是私有的唯一原因,请添加@VisibleForTest
注释是测试)。 不幸的是,Kotlin没有包私有的概念。
使用internal
访问修饰符标记的类和方法将在Kotlin,Gradle和Intellij的当前版本中工作,以便从测试类访问这些方法。 这些工具将主要和测试源路径视为同一模块的一部分。
你已经试过了吗? 如果它失败了,你应该报告一个错误,因为这已经被报告,修复,应该罚款任何当前版本。
可能最简单的解决方案是将您的unit testing依赖于内部代码放置在与生产环境相同的模块中,并且在独立模块中只保留使用公共API的集成测试。
这似乎是合理的,因为internal
修饰符意味着完全相同的模块内部的可见性。
- 与Kotlin测试异步失败的Mockito
- Kotlin协同工具使用生产和mockito来嘲笑生产工作
- 为什么$ MockitoMock $实例不被识别为模拟?
- 测试两个目录树的相等性
- 如何管理Kotlin中的unit testing资源,如启动/停止数据库连接或嵌入式弹性搜索服务器?
- Androidunit testing没有被嘲笑
- Android测试运行时不需要启动模拟器(选择设备对话框不会出现) – 空的测试套件
- 不能在Kotlinunit testing(ExecutionException,Aapt2Exception)
- 如何在unit testing中处理嘲讽的RxJava2可观察抛出exception