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が見つからない理由はわかりません。
したがって、明らかに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'
}
}
}
私の最新のAndroid=バージョンで同じ問題があり、以下のコードを使用して解決しました。
dependencies {
testImplementation 'junit:junit:4.12'
implementation 'junit:junit:4.12'
}
追加してみてください
repositories {
maven { url 'http://repo1.maven.org/maven2' }
build.gradleのbuildscript {の直下
私はこれが古いことを知っていますが、最近これに遭遇しました。 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'
}
}
}