Kotlin REPL与Android类unStub!编辑

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

[ 显示问题的图像[2]

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

使用卸载或者甚至集成的Android支持从测试中的存根删除异常(请参阅这里 “模拟Android依赖”的末尾)将无法正常工作,因为这只会影响您的Gradle构建。

我能想到的唯一解决方案是在Kotlin跟踪器上打开一个问题,或者挖掘Kotlin插件中REPL函数的源代码并发送一个Pull Request。

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

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

如果你不关心正确性,那么你可以使用Robolectric的Android实现,把它作为依赖添加到项目中。 为了确保它不会与实际的实现相冲突,您应该使用专用于REPL的单独模块来完成此操作。

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