Android Studio和Gradle的单元测试?
如何在Android Studio(IntelliJ)中轻松地将单元测试添加到我的Android项目中 更确切地说:我想添加一个包含测试代码(JUnit4)的文件夹,并使用常规安装的JDK(而不是Android仿真器)从那里执行单元测试。 到目前为止,我已将文件夹“test/java/”添加到我的模块中,并将“test”添加为源集,将junit添加为测试依赖项:Android Studio和Gradle的单元测试?,android,unit-testing,junit,gradle,android-studio,Android,Unit Testing,Junit,Gradle,Android Studio,如何在Android Studio(IntelliJ)中轻松地将单元测试添加到我的Android项目中 更确切地说:我想添加一个包含测试代码(JUnit4)的文件夹,并使用常规安装的JDK(而不是Android仿真器)从那里执行单元测试。 到目前为止,我已将文件夹“test/java/”添加到我的模块中,并将“test”添加为源集,将junit添加为测试依赖项: sourceSets { instrumentTest.setRoot('src/test') } dependencies {
sourceSets {
instrumentTest.setRoot('src/test')
}
dependencies {
instrumentTestCompile 'junit:junit:4.+'
// ...
}
当我现在在test/java文件夹上选择运行“所有测试”时,它会给我一个UnsupportedOperationException
我错过了什么?如何为Android项目运行单元测试
推荐一个类似Eclipse中“Infinitest”的插件的额外积分-我可以简单地保存一个类并自动执行它的单元测试。:-)
PS:我不想使用,因为那个插件似乎已经被弃用了。我在过去的几周里(也)一直在使用它。 事实上,那是类固醇,因为我还得把机器人分子放进罐子里 简短回答:除非我将该错误与其他错误混淆,否则我认为您正在尝试使用Android testrunner运行单元测试 长答覆: 我最终得到了这个不推荐使用的插件(在尝试之后,然后尝试将测试放入androidTest文件夹),因为它为我解决了Jenkins上的一些问题。 缺点是它不能将文件夹本身识别为java或android代码,因此代码完成可以处理除文件夹内容之外的所有内容(例如,它正确地看到基本项目和所有依赖项) 我要做的是在Android Studio中运行它,创建一个JUnit(而不是Android)testrunner。 它可能无法开箱即用,因为类路径顺序混乱(尽管只需在gradle中运行测试就可以了) 基本上,我必须执行的手动步骤是:
-classpath
参数:
- 将junit>3.8移到字符串的顶部(我猜是因为否则您将在android中得到一个,它太旧了)
- 若你们引用它,那个么移动机器人分子作为第二个,否则真正的android方法会在机器人分子方法之前找到
- 将您的测试类输出路径附加到末尾,这样它就会找到您的测试(请记住以“test”结尾您的测试类,否则将找不到它们)
-classpath
附加到-ea
之后的runner VM选项中
(我在许多地方发现了这个解决方案,或其中的一部分,一个非常好的解决方案是:它也适用于简单的单元测试)我现在有很多零散的知识,这是因为我在预览软件时发现了很多问题,而且为了解决这些问题,我必须通过大量的信息,但是如果你在这个主题上有更具体的问题,请告诉我:)我想答案应该已经在Android Studio 1.1(以及当前的gradle插件)中了。 他们引入了单元测试支持。 它仍然是实验性的,但比我们以前在这里的努力要少:)
请参阅。在最新的Gradle插件中,“instrumentTest”没有被“androidTest”取代吗?更新了我的答案,谢谢。然而,这个答案很快就过时了,因为所有的工作都在AS中进行单元测试(尽管我仍然使用不推荐的插件,因为我没有找到任何稳定的解决方案)。这才是真正的解决方案!最后,他们构建了真正的单元测试支持。还有,JUnit4.x!他们从android.jar中删除了所有的“final”类,所以我们也可以模仿android-D