Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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
Java 在MacOSx上使用Gradle编译一个简单的Junit测试_Java_Junit_Gradle - Fatal编程技术网

Java 在MacOSx上使用Gradle编译一个简单的Junit测试

Java 在MacOSx上使用Gradle编译一个简单的Junit测试,java,junit,gradle,Java,Junit,Gradle,我正在尝试构建最简单的gradle项目(带有测试)。我看了所有相关的问题和谷歌搜索,我似乎遗漏了一些非常基本的、显然不常见的东西 我创建了一个测试类,“GradleCompileTestJava”未能编译该文件 包org.junit不存在 它找到了测试,知道这是一个测试,但似乎找不到自己的junit.jar文件 build.gradle包含 应用插件:“java” 就这样。赤裸裸!我还尝试添加 依赖关系{ testCompile'junit:junit:4.10' } 由此我得到了“无法解决所有

我正在尝试构建最简单的gradle项目(带有测试)。我看了所有相关的问题和谷歌搜索,我似乎遗漏了一些非常基本的、显然不常见的东西

我创建了一个测试类,“GradleCompileTestJava”未能编译该文件

包org.junit不存在

它找到了测试,知道这是一个测试,但似乎找不到自己的junit.jar文件

build.gradle包含

应用插件:“java”

就这样。赤裸裸!我还尝试添加

依赖关系{

testCompile'junit:junit:4.10'

}

由此我得到了“无法解决所有依赖关系”,这让我觉得gradle已经迷失了自己的文件(?)。我看到了gradle的installed/Users/me/Documents/Projects/gradle-1.3/lib/plugins/junit-4.10.jar文件

事实上,当我运行“gradle 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.

您需要确保已经设置了repo,并且需要包含对junit的依赖关系。这意味着您的构建需要类似于此的内容。gradle

repositories {
    mavenCentral()
}

apply plugin: 'java'

dependencies {
    testCompile 'junit:junit:4.10'
}
这本指南可能会有所帮助-

最新等级测试应在androidTest目录下进行

同样在gradle.build中:

dependencies {
     androidTestCompile 'junit:junit:4.+'
}
还可以将这些添加到defaultConfig

defaultConfig {

    testPackageName "test.java.foo"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"

}

它可能还需要在存储库声明中使用mavenLocal()

repositories {
  mavenLocal()
  mavenCentral()
}

在我的build.gradle中,我有这样一个:

android {
sourceSets { main { java.srcDirs = ['src/main/java', 'src/test/java'] } }
而且

dependencies {
testCompile 'junit:junit:4.12'}
当我从build.gradle中删除以下内容时,问题就消失了

repositories {
    mavenCentral()
}

apply plugin: 'java'

dependencies {
    testCompile 'junit:junit:4.10'
}
“src/test/java”

加上

repositories {
    mavenCentral()
}

这对我很有效,如果你使用Android Studio进行Android开发

我在测试用例中遇到了类似的问题,并得到了类似的错误。我可以通过在build.gradle文件中添加源集来修复它

例如:

sourceSets {
src {
   test{
      java{
    srcDirs =["com/testfile/appservice/test/endpoint"]
    }
      }
}
}


src/test/java是测试包上方的目录名,com.testfile.appservice.test.endpoint是编写junit测试的包名。

对于Android Studio,它是
instrumentTestCompile
而不是
testCompile
。这对我来说仍然不起作用。。让mavenLocal切换到中央。。没有变化。注意:这里有关于这个主题的更多信息(在结尾,作者提到在Gradle版本2.2到2.8上测试一个工作解决方案):您找到这个问题的解决方案了吗?我被困在这里,到目前为止,找到的每个解决方案都不起作用。我试图在我的android SDK项目中运行单元测试,但遇到了同样的问题。当您使用New->folder->java folder创建该文件夹时,src/test/java会自动添加到sourceset中。参考:,第6.2节(见警告)。它失败的原因是testCompile只对测试java文件发生。当目录被指定为源时,testCompile不会发生,因此org.junit包没有被编译,导致它在运行时失败。作为一种教育性测试,您还可以将“compile'junit:junit:4.12'”添加到依赖项中,以看到问题消失。并不是说你真的想把它留在那里。。。