Сборка Maven завершается неудачно с Java 8 и JUnit 5 - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть Java проект, который использует Java 8. Я хочу использовать JUnit 5. Я использую Eclispe. Если я добавлю библиотеку JUnit 5 в путь сборки проекта, сборка будет успешной в Eclipse. Тем не менее, когда я строю с Maven в командной строке, это терпит неудачу.

    Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
    Maven home: C:\Program Files\apache-maven-3.6.3\bin\..
    Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: C:\Program 
    Files\Java\jdk1.8.0_241\jre

Ниже pom. xml. Я пробовал другие версии pom, найденные в поиске Google, но все они дали мне те же ошибки. ОБНОВЛЕНИЕ: Если я удаляю <scope>test</scope> из pom. xml, сборка все равно не удалась.

<properties>
    <!-- Dependency versions -->
    <junit.jupiter.version>5.6.0</junit.jupiter.version>
    <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
    <!-- Java 8 -->
    <java.version>1.8</java.version>
    <!-- Encoding -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  <!-- Jupiter API for writing tests -->
  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>${junit.jupiter.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <!-- Maven Surefire plugin to run tests -->
  <build>
    <plugins>
       <!-- plugin to run test cases from maven -->
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven-surefire-plugin.version}</version>
      </plugin>
      <!-- Maven plugin to use perticular java version to compile code -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
[INFO] 5 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  7.473 s
[INFO] Finished at: 2020-04-28T12:19:11-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project Java8: Compilation failure: Compilation failure:
[ERROR] C:\Users\Documents\Java8\src\main\java\com\name\stream\ClassName.java:[8,23] error: package org.junit does not exist
[ERROR] C:\Users\Documents\Java8\src\main\java\com\name\stream\ClassName.java:[8] error: static import only from classes and interfaces
[ERROR] C:\Users\Documents\Java8\src\main\java\com\name\stream\ClassName.java:[31,2] error: cannot find symbol
[ERROR]   symbol:   method assertEquals(Optional<String>,Optional<Object>)
[ERROR]   location: class ClassName
[ERROR] C:\Users\Documents\Java8\src\main\java\com\name\stream\ClassName.java:[33,2] error: cannot find symbol
[ERROR]   symbol:   method assertEquals(Optional<Optional<String>>,Optional<Object>)
[ERROR]   location: class ClassName
[ERROR] C:\Users\Documents\Java8\src\main\java\com\name\stream\ClassName.java:[44,2] error: cannot find symbol
[ERROR]   symbol:   method assertEquals(Optional<String>,Optional<Object>)
[ERROR]   location: class ClassName
[ERROR] -> [Help 1]

1 Ответ

0 голосов
/ 28 апреля 2020

Eclipse неправильно разделяет область теста и компилирует зависимости области, поэтому сохраняйте тест области, который является правильным. Вы должны создать класс Test в src/test/java/com/name/stream/ClassNameTest.java и использовать соответствующие аннотации, которые должны быть из org.junit.jupiter.api package

Взгляните на этот пример проекта: github.com/khmarbaise/basic- junit-jupiter-test (Простой тестовый пример и утверждения также простой класс с одним методом, просто чтобы показать, как он работает ..) ... Он основан на командной строке, в IDEA Intellij, должен также работать в Eclipse и работать на GitHub Actions

...