>

Maven에서 테스트를 실행하면 다음과 같은 결과가 나타납니다.

[INFO] -------------------------------------------------------    
[INFO]  T E S T S     
[INFO] -------------------------------------------------------   
[INFO]   
[INFO] Results:  
[INFO]   
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

내 테스트 클래스 인 JsonReaderTest.class는src/test/java에 있으며 maven-surefire-plugin에서 아는 한 올바른 이름 규칙을 따릅니다.

Maven 외부에서 실행할 때 테스트가 정상적으로 실행됩니다.

내 플러그인에이 플러그인이 포함되어 있습니다 :

<!-- Executes tests -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
</plugin>

이것은 내 의존성에서

<!-- Test -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.0.0</version>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.0.0</version>
</dependency>

내 시험 수업 :

package org.avalin.optaplanner.test.java;
import org.avalin.optaplanner.json.JsonReader;
import org.junit.jupiter.api.*;
import java.io.FileNotFoundException;
import java.nio.file.Paths;
import static org.junit.jupiter.api.Assertions.*;
public class JsonReaderTest
{
    @Test
    @DisplayName("Test: No such file at designated path")
    void testloadFromJsonTest() throws Exception
    {
        Throwable exception = assertThrows(FileNotFoundException.class, 
        ()-> JsonReader.loadFromJson(".json"));
        assertEquals(".json (No such file or directory)", 
        exception.getMessage());
    }
    @Test
    @DisplayName("Test: Load Shifts from JSON (String instead of number)")
    void testLoadShiftsFromJson3()
    {
        Throwable exception = assertThrows(NumberFormatException.class, ()-> JsonReader.loadFromJson(Paths.get("src/main/resources/org/avalin/optaplanner/json/faultyShift-2.json").toAbsolutePath().toString()));
        assertEquals("\nOne or more of your \"shift\" elements has a number format exception.\n" +
            "Check for errors in your JSON-properties.\n" +
            "(Did you insert a string instead of a number in id?)", 
        exception.getMessage());
    }
    @Test
    @DisplayName("Test: JSON is correctly loaded")
    void testJsonIsLoaded()
    {
        assertFalse(JsonReader.jsonIsLoaded());
    }
    @AfterEach
    void cleanJsonReader()
    {
        JsonReader.cleanJsonReader();
    }
}

이 문제를 인터넷 검색하려고 시도했을 때 잘못된 규칙은 명명 규칙 (클래스로 끝나거나 테스트로 시작해야하며 변경없이 테스트 했음)과 테스트 클래스를 넣어야한다는 것입니다. 적절한 폴더.

내가 실행할 때 :mvn -Dtest = JsonReaderTest 테스트

따라옵니다 :

Failed to execute goal org.apache.maven.plugins:maven-surefire-
plugin:2.20.1:test (default-test) on project optaplanner: No tests were 
executed! 

JsonReaderTest.class는 target/test-classes 내부에서도 올바르게 생성됩니다

여기의 범인은 무엇입니까?

  • 답변 # 1

    Maven Surefire 플러그인과 JUnit 5를 함께 사용하려면 약간의 조정이 필요합니다 ...

    문서에서 :

    와이즈 비즈

    The JUnit team has developed a very basic provider for Maven Surefire that lets you run JUnit 4 and JUnit Jupiter tests via mvn test. The pom.xml file in the junit5-maven-consumer project demonstrates how to use it and can serve as a starting point.

    Due to a memory leak in Surefire 2.20, the junit-platform-surefire-provider currently only works with Surefire 2.19.1.

  • 답변 # 2

    같은 문제가있었습니다. 모든 테스트 클래스는 개인 패키지였으며 JUnit 5는이를 볼 수 없었습니다. 해결책은이 종속성을 pom 파일에 추가하는 것입니다.

    ...
    <build>
        <plugins>
            ...
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <dependencies>
                    <dependency>
                        <groupId>org.junit.platform</groupId>
                        <artifactId>junit-platform-surefire-provider</artifactId>
                        <version>1.0.0</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
    ...
    
    

  • 답변 # 3

    다음 pom 구성이 저에게 효과적이었습니다 :

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.3.2</version>
        <scope>test</scope>
    </dependency>
    
    

    위에 언급 된 @glytching과 같은 플러그인 부분

    <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.4.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.4.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>1.4.0</version> <scope>test</scope> </dependency> .... <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.19</version> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>1.0.0</version> </dependency> </dependencies> </plugin> ...

관련 자료

  • 이전 Java를 통해 XPath 및 Selenium WebDriver를 사용하여 SVG 요소를 클릭하는 방법
  • 다음 숫자에 대한 앵귤러 폼 검증