测试双打的Kotlin哲学是什么?

测试双打的科特林哲学是什么? 由于所有的类和函数都被默认封装(不公开 ),像Mockito这样的嘲笑框架显然不是一流的公民。

已经写了很多关于这个问题的文章 ,还有关于可能的解决方案 ,但是Kotlin的设计师想要用双打来测试呢? 它是假货和存根,还是应该扮演你自己的间谍和嘲笑?

像Mockito这样的框架是第一类公民,包括他们被直接提及的地方,这是Kotlin 1.0.6发布的all-open编译插件的原因之一。 您对问题/解决方案的引用已经过时, 如果这些作者更新了他们的帖子这将是很好的

从该发布公告中,您将看到Mockito特别提出:

全开放的编译器插件使得类使用特定的注解进行注释,并且它们的成员在没有明确的开放关键字的情况下打开,因此使用Spring AOP或Mockito等框架/库变得更加容易。 您可以在相应的KEEP中阅读关于全部打开的详细信息。

我们提供Gradle和Maven的全开放插件支持,以及IDE集成。

该插件可以使用命令行编译器,IDE编译器以及Gradle和Maven使用。

其他参考:

  • 与Kotlin一起使用Mockito

Kotlin设计的很大一部分是Joshua Bloch的Effective Java,意思是默认关闭,不变性等等。

因此,这些问题也存在于Java中。 解决这些问题的方法是尽可能地使用接口,所以你可以为你的生产代码提供测试双打或其他任何实现。

对于测试,这些可能是嘲笑,或假货,或存根,或你有什么。 请记住,例如,一个编写良好的内存资料库在测试中比处理该类的模拟更容易。