Gradle ошибка compileJava: пакет org.junit не существует

Я пытаюсь выполнить простой тест junit с помощью gradle и столкнулся с следующей проблемой при запуске gradle test:

: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, когда я его включил в зависимости.

Ответ 1

Поэтому, видимо, мне нужно было добавить зависимость 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'
        }
    }
}

Ответ 2

У меня та же проблема в моей последней версии Android, и я решил ее с помощью кода ниже. Я надеюсь, что вы получите помощь.

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

Ответ 3

Попробуйте добавить

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

непосредственно под вашим buildscript {in build.gradle

Ответ 4

Я знаю, что это старо, но я столкнулся с этим недавно. Вы должны быть в состоянии изменить srcdirs для тестирования с помощью gradle, а также запустить модульные тесты. Если вам нужна структура src/*, просто поместите все свои тесты в test/*.

Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что если вы включите свои тесты в папку main/java code, они будут пытаться скомпилировать их на этом этапе. Переместите их за пределы папки src и обновите структуру srcdir соответствующим образом, и она должна работать как положено.

apply plugin: 'java'

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

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
    test {
        java {
            srcDir 'test'
        }
    }
}