在 MacOSx 上使用 Gradle 编译一个简单的 Junit 测试
Posted
技术标签:
【中文标题】在 MacOSx 上使用 Gradle 编译一个简单的 Junit 测试【英文标题】:Getting one simple Junit test to compile with Gradle on MacOSx 【发布时间】:2013-01-11 09:10:33 【问题描述】:我正在尝试构建最简单的 gradle 项目(带有测试)。查看了所有相关问题和 Google 搜索,我似乎遗漏了一些非常基本的东西,而且显然不常见。
我创建了一个测试类,“gradle compileTestJava”无法编译文件说
包 org.junit 不存在
它找到了测试,知道这是一个测试,但似乎找不到自己的 junit.jar 文件。
build.gradle 包含
应用插件:'java'
就是这样。裸露的骨头!我也尝试添加
依赖
testCompile 'junit:junit:4.10'
这样我得到“无法解决所有依赖项”,这让我认为 gradle 已经迷失了它自己的文件(?)。我看到 gradle 安装了 /Users/me/Documents/Projects/gradle-1.3/lib/plugins/junit-4.10.jar 文件。
事实上,当我运行“gradle dependencies”时,我得到了
testCompile - Classpath for compiling the test sources.
No dependencies
我不知道这是否应该包含内置插件依赖项。我的猜测是它应该列出junit。
有什么想法吗?
这是我得到的:
:compileTestJava
/Users/me/Documents/Projects/experiment1/src/test/java/MyUnitTests.java:3: package org.junit does not exist
import org.junit.*;
^
/Users/me/Documents/Projects/experiment1/src/test/java/MyUnitTests.java:7: cannot find symbol
symbol : class Test
location: class test.java.MyUnitTests
@Test
^
/Users/me/Documents/Projects/experiment1/src/test/java/MyUnitTests.java:9: cannot find symbol
symbol : variable Assert
location: class test.java.MyUnitTests
Assert.assertEquals(2 + 2, 4);
^
3 errors
FAILED
FAILURE: Build failed with an exception.
【问题讨论】:
您找到解决此问题的方法了吗?我被困在这里,到目前为止找到的每个解决方案都不起作用。我正在尝试在我的 android SDK 项目中运行单元测试并面临同样的问题。 【参考方案1】:你需要确保你已经设置了你的 repos,并且你需要包含对 junit 的依赖。这意味着您的 build.gradle 需要类似这样的东西
repositories
mavenCentral()
apply plugin: 'java'
dependencies
testCompile 'junit:junit:4.10'
【讨论】:
对于 Android Studio,它是instrumentTestCompile
而不是 testCompile
。
这仍然对我不起作用.. 有 mavenLocal,切换到 Central.. 没有变化。
注意:这里有关于这个主题的更多信息(在最后,作者提到在 Gradle 版本 2.2 到 2.8 上测试一个可行的解决方案):softnoise.wordpress.com/2014/09/07/…【参考方案2】:
本指南可能会有所帮助 - http://www.slideshare.net/tobiaspreuss/how-to-setup-unit-testing-in-android-studio
最新的 gradle 测试应该在 androidTest 目录下
也在你的 gradle.build 中:
dependencies
androidTestCompile 'junit:junit:4.+'
同时添加 defaultConfig
defaultConfig
testPackageName "test.java.foo"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
【讨论】:
【参考方案3】:您的存储库声明中可能还需要 mavenLocal()
repositories
mavenLocal()
mavenCentral()
【讨论】:
【参考方案4】:在我的 build.gradle 我有这个:
android
sourceSets main java.srcDirs = ['src/main/java', 'src/test/java']
还有
dependencies
testCompile 'junit:junit:4.12'
当我从 build.gradle 中删除以下内容时,问题就消失了
'src/test/java'
【讨论】:
当您使用 New->Folder->Java 文件夹创建该文件夹时,src/test/java 会自动添加到 sourceSets。供参考:vogella.com/tutorials/AndroidTesting/article.html,第 6.2 节(见警告)。它失败的原因是 testCompile 只发生在测试 java 文件中。当该目录被指定为源时,不会发生testCompile,因此不会编译org.junit包,导致它在运行时失败。 作为一个教育测试,您还可以将“compile 'junit:junit:4.12'”添加到您的依赖项中以查看问题消失。并不是说你想把它留在那里真正......【参考方案5】:只需添加
repositories
mavenCentral()
如果您使用 Android Studio 进行 Android 开发,它对我有用
【讨论】:
【参考方案6】:我在我的测试用例中遇到了类似的问题,并且遇到了类似的错误。我可以通过在我的 build.gradle 文件中添加源集来修复它。
例如:
sourceSets
src
test
java
srcDirs =["com/testfile/appservice/test/endpoint"]
src/test/java 是测试包上方的目录名称,com.testfile.appservice.test.endpoint 是我的 junit 测试编写的包的名称。
【讨论】:
以上是关于在 MacOSx 上使用 Gradle 编译一个简单的 Junit 测试的主要内容,如果未能解决你的问题,请参考以下文章