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