如何在Android代码上执行Java测试

如何在Android代码上执行Java测试,java,android,intellij-idea,Java,Android,Intellij Idea,我想执行一个Java类来测试Android应用程序(来自Java模块)的功能,以便将数据读/写到文件中。如果我在Android模块中执行,我会得到存根!错误(Android SDK)。如果我安装或模拟,速度非常慢(我只测试一个特定的部分) 如果我将Android模块作为模块依赖项包含进来,IntelliJ仍然会构建Android文件,我会得到一个存根!执行期间出错。但是,如果我只包括classes目录并将它们标记为提供的,那么在登录时就会出现错误。被称为 有没有一种方法可以在Android应用程

我想执行一个Java类来测试Android应用程序(来自Java模块)的功能,以便将数据读/写到文件中。如果我在Android模块中执行,我会得到存根!错误(Android SDK)。如果我安装或模拟,速度非常慢(我只测试一个特定的部分)

如果我将Android模块作为模块依赖项包含进来,IntelliJ仍然会构建Android文件,我会得到一个存根!执行期间出错。但是,如果我只包括classes目录并将它们标记为提供的,那么在登录时就会出现错误。被称为


有没有一种方法可以在Android应用程序的组件上运行简单的Java测试(不使用活动等),使用Java SDK,不构建Android特定的文件?

您需要在设备(或模拟器)上插入测试并运行它们,或者使用,它提供了SDK jar存根类的替代品。

虽然您可以使用Robolectric或其他技术在主机JVM上进行测试,值得注意的是,这只应在开发周期中用作变通方法,以避免长时间等待测试在模拟器或设备上运行,并且永远不会取代真实平台上的测试,因为DalvikJavaSE运行时之间的不兼容可能影响测试的准确性


最新的设备,引入了更强大的CPU,可以在大多数情况下以非常合理的速度运行测试,因此可能不需要寻找其他解决方案。

似乎在IntelliJ 10的后续版本中得到了修复-无法重现此问题

这更多用于开发人员测试,快速运行代码片段,我认为这更像是一个IntelliJ问题,因为它过去是有效的,但现在不再有效了。作为一种解决方法,我创建了一个新项目(JavaSDK)和扩展日志,覆盖Log.x,这可能会导致存根!(打印System.out而不是super.Log.x)。复制和粘贴代码是一件痛苦的事情——我希望它仍能像在Android模块中本地使用Java SDK时那样工作。