Безошибочный не берет тесты Junit 4

По некоторым причинам я не могу заставить Знатока 2 Безошибочных плагина выполнять тестовый класс JUnit 4.

public class SimpleTest {
  @org.junit.Test
  public void simple() {
     System.out.println("foo");
  }
}

Однако, если я изменяю этот класс, чтобы быть JUnit-3 как, такой как

public class SimpleTest extends junit.framework.TestCase {
  public void testBar() {
     System.out.println("bar");
  }

  @org.junit.Test
  public void simple() {
     System.out.println("foo");
  }
}

затем это выполняется. Вот то, что я сделал:

  • проверенная версия Знатока: Знаток Apache 2.2.1 (r801777; 06.08.2009 20:16:01 +0100)
  • проверенная Безошибочная версия: последовавший этот совет
  • проверенная Безошибочная версия: регистрировавшие Безошибочные банки мой ~/.m2/repository/org/apache/maven/surefire - все они - любой версия 2.4.2 или 2.4.3
  • сделанный a mvn dependency:tree | grep junit для обеспечения я только завишу от junit версии 4.7

Модуль, в котором у меня есть эта проблема, не имеет тестов JUnit 3.

Есть ли что-либо еще, что я пропускаю?

35
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

mvn -X помогло мне раскрыть следующее:

...
[INFO] [surefire:test {execution: default-test}]
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.4.3:runtime (selected for runtime)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.4.3:runtime (selected for runtime)
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/org/apache/maven/surefire/surefire-booter/2.4.3/surefire-booter-2.4.3.jar
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/org/apache/maven/surefire/surefire-api/2.4.3/surefire-api-2.4.3.jar
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG]   org.testng:testng:jar:jdk15:5.8:test (selected for test)
[DEBUG]     junit:junit:jar:3.8.1:test (selected for test)
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/org/testng/testng/5.8/testng-5.8-jdk15.jar
[DEBUG] Adding to surefire booter test classpath: /home/mindas/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[DEBUG] dummy:dummy:jar:1.0 (selected for null)
[DEBUG] Retrieving parent-POM: org.apache.maven.surefire:surefire-providers:pom:2.4.3 for project: null:surefire-testng:jar:null from the repository.
[DEBUG] Adding managed dependencies for unknown:surefire-testng
[DEBUG]   org.apache.maven.surefire:surefire-api:jar:2.4.3
[DEBUG]   org.apache.maven.surefire:surefire-booter:jar:2.4.3
[DEBUG]   org.codehaus.plexus:plexus-utils:jar:1.5.1
[DEBUG]   org.apache.maven.surefire:surefire-testng:jar:2.4.3:test (selected for test)
[DEBUG]     org.apache.maven:maven-artifact:jar:2.0:test (selected for test)
[DEBUG]       org.codehaus.plexus:plexus-utils:jar:1.0.4:test (selected for test)
[DEBUG]     junit:junit:jar:3.8.1:test (selected for test)
[DEBUG]     org.testng:testng:jar:jdk15:5.7:test (selected for test)
[DEBUG]     org.apache.maven.surefire:surefire-api:jar:2.4.3:test (selected for test)
...
[DEBUG] Test Classpath :
...
[DEBUG]   /home/mindas/.m2/repository/junit/junit/4.7/junit-4.7.jar

Так что, похоже, проблема исходила из testng jar, требующей JUnit v3.8.1. Несмотря на то, что Test Classpath зависел от JUnit 4, было уже слишком поздно.

testng зависимость находилась в моем POM:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>5.8</version>
  <scope>test</scope>
  <classifier>jdk15</classifier>
</dependency>

Сразу после того, как я прокомментировал ее, тесты начали выполняться.

Уроки извлечены:

  • mvn зависимости:tree не всегда достаточно, mvn -X друг.
  • surefire не создан для рая разработчиков (это я понял, глядя на отчеты JIRA проекта). Это особенно верно, так как других альтернатив нет, если вы используете Maven.

Спасибо всем за помощь. К сожалению, нет способа разделить точки ответа между Паскалем и Калебом, но совет Калеба использовать mvn -X помог мне встать на правильный путь, так что правильные точки ответа идут к нему.

.
31
ответ дан 27 November 2019 в 06:42
поделиться

Проверка, которую вы сделали, хороша, особенно проверка того, что вы используете версию 2. 3+ плагина surefire (по умолчанию вы получите версию 2.4.3 с maven 2.1 super POM, так что это должно быть нормально) и проверили, что вы не вытягиваете зависимость junit-3.8.1.jar переходным способом.

Теперь, чтобы проверить, что это не "глобальная проблема" (я так не думаю TBH), не могли бы вы создать проект с нуля, например, запустив его:

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=maven-junit4-testcase

Затем обновите junit-зависимость:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.7</version>
  <scope>test</scope>
</dependency>

И настройте уровень компилятора на 1.5+

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.5</source>
    <target>1.5</target>
  </configuration>
</plugin>

Наконец, поместите ваш SimpleTest.java рядом с AppTest.java и запустите mvn test.

Если запуск mvn теста работает нормально для этого проекта (и я ожидаю, что он будет работать без проблем), не могли бы вы обновить свой вопрос с конфигурацией POM, которую вы используете (из проекта, у которого возникли проблемы)?

.
1
ответ дан 27 November 2019 в 06:42
поделиться

Я не знаю, что вы имеете в виду под "не могу выполнить", но помогает ли это явно установить включения, используемые maven-surefire-плагином ?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.3</version>
    <configuration>
        <includes>
            <include>**/*Test.java</include>
        </includes>
    </configuration>
</plugin>

Также, предоставляет ли запуск maven с флагом -X какую-либо полезную информацию?

.
12
ответ дан 27 November 2019 в 06:42
поделиться

Настроили ли вы ваш maven-compile-plugin на корректный уровень компилятора, например:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.5</source>
    <target>1.5</target>
  </configuration>
</plugin>

Иначе у maven возникнут проблемы с аннотациями

.
0
ответ дан 27 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: