Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio和Gradle的单元测试?_Android_Unit Testing_Junit_Gradle_Android Studio - Fatal编程技术网

Android Studio和Gradle的单元测试?

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 {

如何在Android Studio(IntelliJ)中轻松地将单元测试添加到我的Android项目中

更确切地说:我想添加一个包含测试代码(JUnit4)的文件夹,并使用常规安装的JDK(而不是Android仿真器)从那里执行单元测试。 到目前为止,我已将文件夹“test/java/”添加到我的模块中,并将“test”添加为源集,将junit添加为测试依赖项:

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中运行测试就可以了)

基本上,我必须执行的手动步骤是:

  • 运行JUnitTestRunner以查看AS使用的命令行
  • 执行以下操作编辑
    -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