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

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

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

./gradlew -p the-java-proj test

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

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

Error running MYTESTNAME: No junit.jar in Module ‘MYMODULENAME’ runtime scope

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

apply plugin: 'java'

repositories {
    mavenCentral()
}

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

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

最佳答案 如果你将一个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
点赞