使用Gradle在Android Studio中运行普通Java项目的单元测试

时间:2013-11-11 20:49:25

标签: android unit-testing junit gradle android-studio

在一个多模块Android项目中,我有一个其他Android库和应用程序所依赖的普通Java项目。我最近使用Gradle迁移了整个项目。

我在运行普通Java项目的junit测试时遇到问题,仅在Android Studio中运行。在命令行上,测试运行正常:

./gradlew -p the-java-proj test

这会按预期执行单元测试,如果我插入Assert.fail()作为完整性检查,我会正确地得到预期的失败。

但是,我无法在Android Studio中运行单元测试。我创建了一个运行配置来运行包中的所有测试,运行时出现此错误:

  

运行MYTESTNAME时出错:模块“MYMODULENAME”运行时范围内没有junit.jar

最后的“运行范围”很可疑,但我不知道我应该怎么做。这是项目的build.gradle

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.11'
    testCompile 'org.mockito:mockito-all:1.9.5'
}

这尤其令人费解,因为我可以在迁移到Gradle之前在Android Studio中运行单元测试。只是现在我有这样的问题。我也没有获得友好的上下文菜单选项来运行单个单元测试。而且,据我记忆,在以前工作的当前文件中运行单元测试的键盘快捷键,现在它只是弹出运行配置选择器,没有添加新选项。

2 个答案:

答案 0 :(得分:2)

如果你将java项目附加到android项目,当从主项目运行测试时,它将不会在java库项目中运行测试。它只做的是创建库项目的jar。 所以我们需要明确告诉你运行测试任务。

apply plugin: 'java'

repositories {
mavenCentral()
}

dependencies {
   testCompile 'junit:junit:4.11'
   testCompile 'org.mockito:mockito-all:1.9.5'
}

jar.dependsOn test

答案 1 :(得分:0)

来自这篇文章:https://coderwall.com/p/ybds4w(感谢@GalBenHaim

  

但是,如果您需要单独使用JUnit进行POJO测试或使用流行的框架,那么Android Studio中还没有集成支持。

换句话说,在我写这篇文章时,Android Studio无法做到这一点,我无法在POJO上运行我的JUnit测试。在命令行上它工作正常(./gradlew test)。