使用Android Classes的Kotlin REPL unStub!ed

时间:2017-02-13 17:52:18

标签: android android-studio intellij-idea kotlin read-eval-print-loop

我喜欢Idea / Android-Studio中的Kotlin REPL - 但作为Android开发者,我经常遇到Stub!问题在这里。在编写单元测试时,我使用unmock来解决此问题。有没有办法使用那里用于Kotlin REPL插件的相同方法?

[image showing the problem[2]

2 个答案:

答案 0 :(得分:1)

问题在于IDEA中的Kotlin REPL是由Kotlin IDEA插件提供的,该插件没有Android本身的概念,只是查看类路径中的内容,在这种情况下是android.jar包含抛出你提到的异常的存根。

使用unmock甚至集成的Android支持从测试中的存根中删除异常(请参阅“Mock Android依赖项”末尾的here)将无效,因为这只会影响您的Gradle构建。

我能想到的唯一解决方案是在Kotlin tracker上打开问题或挖掘source code of the REPL function in the Kotlin plugin并发送拉取请求。

答案 1 :(得分:0)

所有android(和java.lang。*)类都是Android项目中的占位符。这是因为android不使用标准的java类文件来存储已编译的代码,也无法在计算机上直接运行此代码。

你根本不能将REPL用于android类,它们只存在于实际的设备或模拟器上。

如果您不关心正确性,那么您可以使用Robolectric的Android实现,将其作为项目的依赖项添加。 为了确保它不会与实际实现发生冲突,您应该使用专用于REPL的单独模块来执行此操作。

unmock使用的Robolectic依赖是:org.robolectric:android-all:7.1.0_r7-robolectric-0