首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Android和Gradle进行单元测试?

用Android和Gradle进行单元测试?
EN

Stack Overflow用户
提问于 2014-02-19 09:41:32
回答 2查看 5.7K关注 0票数 10

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

更确切地说,我想添加一个包含测试代码(JUnit 4)的文件夹,并使用常规安装的JDK (不是在Android模拟器中)执行单元测试。到目前为止,我将文件夹' test /java/‘添加到我的模块中,并将'test’添加为源集,将junit添加为测试依赖项:

代码语言:javascript
复制
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,因为这个插件似乎已经被废弃了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-11 08:25:09

我认为答案应该已经在AndroidStudio1.1(和当前的gradle插件)中了。他们引入了单元测试支持。它仍然是实验性的,但不如我们以前在这里所做的努力:)参见这里

票数 1
EN

Stack Overflow用户

发布于 2014-02-19 14:38:01

我也花了几个星期的时间在这上面。实际上,用类固醇,因为我还得把罗波利克放进锅里。

简短的回答:除非我把这个错误和其他的东西搞混了,否则我认为你是在尝试用Android测试器运行单元测试。

很长的答案:我最终得到了不受欢迎的插件(在尝试它之后,然后尝试将测试放到androidTest文件夹中),因为它为我解决了不少关于Jenkins的问题。缺点是它不能将文件夹本身识别为java或android代码,因此代码完成可以处理除文件夹内容之外的所有内容(例如,它正确地看到了基本项目和所有依赖项)。

我要在Android中运行它的是创建一个JUnit (而不是Android)测试器。由于类路径顺序混乱(尽管只在gradle中运行测试,它可以正常工作),所以它可能无法正常工作。

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

  1. 运行junit testrunner以查看AS使用的命令行
  2. 编辑-classpath参数,执行以下操作:
代码语言:javascript
复制
- 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)

  1. 将您刚刚创建的-classpath附加到-ea之后的运行程序VM选项中(我在许多地方找到了该解决方案或其中的一部分:http://kostyay.name/android-studio-robolectric-gradle-getting-work/,它也适用于简单的单元测试)。

今天上午,我没有尝试但我考虑过的另一种选择(见上一篇文章):https://groups.google.com/forum/#!topic/adt-dev/Y8-ppkWell0

我现在有很多零散的知识,因为我在预览SW的过程中发现了很多问题,而且我不得不通过大量的信息来解决这些问题,但是如果您在这个主题上有更多的具体问题,请告诉我:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21876508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档