如何轻松地将单元测试添加到Android (IntelliJ)中的Android项目中?
更确切地说,我想添加一个包含测试代码(JUnit 4)的文件夹,并使用常规安装的JDK (不是在Android模拟器中)执行单元测试。到目前为止,我将文件夹' test /java/‘添加到我的模块中,并将'test’添加为源集,将junit添加为测试依赖项:
sourceSets {
instrumentTest.setRoot('src/test')
}
dependencies {
instrumentTestCompile 'junit:junit:4.+'
// ...
}当我现在选择,在test/java文件夹上运行‘所有测试’时,它会给我一个UnsupportedOperationException。
我遗漏了什么?如何运行Android项目的单元测试?
对于一个插件的推荐,比如Eclipse中的“Infinitest”,我可以简单地保存一个类,并且它的单元测试会自动执行。:-)
PS:我不想使用https://github.com/JakeWharton/gradle-android-test-plugin,因为这个插件似乎已经被废弃了。
发布于 2015-02-11 08:25:09
我认为答案应该已经在AndroidStudio1.1(和当前的gradle插件)中了。他们引入了单元测试支持。它仍然是实验性的,但不如我们以前在这里所做的努力:)参见这里。
发布于 2014-02-19 14:38:01
我也花了几个星期的时间在这上面。实际上,用类固醇,因为我还得把罗波利克放进锅里。
简短的回答:除非我把这个错误和其他的东西搞混了,否则我认为你是在尝试用Android测试器运行单元测试。
很长的答案:我最终得到了不受欢迎的插件(在尝试它之后,然后尝试将测试放到androidTest文件夹中),因为它为我解决了不少关于Jenkins的问题。缺点是它不能将文件夹本身识别为java或android代码,因此代码完成可以处理除文件夹内容之外的所有内容(例如,它正确地看到了基本项目和所有依赖项)。
我要在Android中运行它的是创建一个JUnit (而不是Android)测试器。由于类路径顺序混乱(尽管只在gradle中运行测试,它可以正常工作),所以它可能无法正常工作。
基本上,我必须做的手动步骤是:
-classpath参数,执行以下操作:- move junit > 3.8 at the top of the string (I guess because otherwise you will get the one within android, which is too old)
- move robolectric as second if you reference it, otherwise real android methods will be found before robolectric ones
- append your test classes output path to the end, so it will find your tests (remember to end your test classes with 'Test' otherwise they won't be found)
-classpath附加到-ea之后的运行程序VM选项中(我在许多地方找到了该解决方案或其中的一部分:http://kostyay.name/android-studio-robolectric-gradle-getting-work/,它也适用于简单的单元测试)。今天上午,我没有尝试但我考虑过的另一种选择(见上一篇文章):https://groups.google.com/forum/#!topic/adt-dev/Y8-ppkWell0
我现在有很多零散的知识,因为我在预览SW的过程中发现了很多问题,而且我不得不通过大量的信息来解决这些问题,但是如果您在这个主题上有更多的具体问题,请告诉我:)
https://stackoverflow.com/questions/21876508
复制相似问题