web-dev-qa-db-ja.com

gradle compileJavaエラー:パッケージorg.junitは存在しません

gradle testを実行すると、gradleを使用して次の問題が発生する簡単なjunitテストを実装しようとしています。

:compileJava
/Users/wogsland/Projects/gradling/src/test/CalculatorTest.Java:1: error: package org.junit does not exist
import static org.junit.Assert.assertEquals;
                       ^
/Users/wogsland/Projects/gradling/src/test/CalculatorTest.Java:1: error: static import only from classes and interfaces
import static org.junit.Assert.assertEquals;
^
/Users/wogsland/Projects/gradling/src/test/CalculatorTest.Java:2: error: package org.junit does not exist
import org.junit.Test;
                ^
/Users/wogsland/Projects/gradling/src/test/CalculatorTest.Java:5: error: cannot find symbol
  @Test
   ^
  symbol:   class Test
  location: class CalculatorTest
/Users/wogsland/Projects/gradling/src/test/CalculatorTest.Java:9: error: cannot find symbol
    assertEquals(6, sum);
    ^
  symbol:   method assertEquals(int,int)
  location: class CalculatorTest
5 errors
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
Compilation failed; see the compiler error output for details.

だから私はこのbuild.gradleファイルを持っています:

apply plugin: 'Java'

dependencies {
    testCompile 'junit:junit:4.12'
}

sourceSets {
  main {
    Java {
      srcDir 'src'
    }
  }
}

そしてCalculatorTest.Java

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CalculatorTest {
  @Test
  public void evaluatesExpression() {
    Calculator calculator = new Calculator();
    int sum = calculator.evaluate("1+2+3");
    assertEquals(6, sum);
  }
}

しかし、依存関係に含まれるjunitが見つからない理由はわかりません。

21
wogsland

したがって、明らかにcompile依存関係を追加してから、repositoriesを宣言する必要がありました。私の新しいbuild.gradleテストを正常に実行します:

apply plugin: 'Java'

repositories { jcenter() }
dependencies {
    testCompile 'junit:junit:4.12'
    compile 'junit:junit:4.12'
}

sourceSets {
    main {
        Java {
            srcDir 'src'
        }
    }
}
41
wogsland

私の最新のAndroid=バージョンで同じ問題があり、以下のコードを使用して解決しました。

dependencies {
    testImplementation 'junit:junit:4.12'
    implementation 'junit:junit:4.12'
}
1
shailesh

追加してみてください

 repositories {
    maven { url 'http://repo1.maven.org/maven2' }

build.gradleのbuildscript {の直下

0
moisty

私はこれが古いことを知っていますが、最近これに遭遇しました。 gradleでテストするためにsrcdirsを変更し、単体テストを機能させることができるはずです。 src/*構造が必要な場合は、すべてのテストをtest/*に入れてください。

おそらく発生する問題は、メイン/ Javaコードフォルダーにテストを含めると、その段階でテストをコンパイルしようとすることです。それらをsrcフォルダーの外に移動し、それに応じてsrcdir構造を更新すると、期待どおりに機能するはずです。

apply plugin: 'Java'

repositories { jcenter() }
dependencies {
    testCompile 'junit:junit:4.12'
}

sourceSets {
    main {
        Java {
            srcDir 'src'
        }
    }
    test {
        Java {
            srcDir 'test'
        }
    }
}
0
Tekdahl