无法在JUnit 5项目中解析符号测试

时间:2019-08-06 22:40:33

标签: intellij-idea junit mockito

我在IntelliJ 2019.2。中有一个旧项目。它使用JUnit 5和Mockito。我正在尝试编写一个简单的测试,但是IntelliJ无法解析@Test批注(org.junit.jupiter.api.Test)。如果在“项目”窗口中检查外部库,则可以看到此符号,但是我不明白为什么无法解决该问题。

我的POM是

<?xml version="1.0" encoding="UTF-8"?>
<project 
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi=
    "http://www.w3.org/2001/XMLSchema-
                               instance"      
  xsi:schemaLocation=
     "http://maven.apache.org/POM/4.0.0                     
      http://maven.apache.org/xsd/
                         maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>

   <groupId>guru.springframework</groupId>
   <artifactId>testing-junit5- 
                mockito</artifactId>
   <version>1.0-SNAPSHOT</version>

   <name>testing-junit5-mockito</name>
   <description>Testing Java with JUnit 5
                            </description>

   <organization>
      <name>Spring Framework Guru</name>
   <url>https://springframework.guru/</url>
   </organization>

   <developers>
     <developer>
        <id>jt</id>
        <name>John Thompson</name>
        <email>john@springframework.guru</email>
    </developer>
   </developers>

   <inceptionYear>2018</inceptionYear>

<licenses>
    <license>
        <name>...</name>
        <url>...</url>
    </license>
</licenses>

<properties>
    <project.build.sourceEncoding>UTF-
      8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-
      8</project.reporting.outputEncoding>
    <java.version>11</java.version>
    <maven.compiler.source>${java.version}
                   </maven.compiler.source>
    <maven.compiler.target>${java.version}
                   </maven.compiler.target>
    <junit-platform.version>5.3.1</junit-
                          platform.version>

    <mockito.version>2.23.0
                         </mockito.version>
  </properties>

<dependencies>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${junit-platform.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>       
          <groupId>org.apache.maven.plugins
                                 </groupId>
            <artifactId>maven-compiler-
                       plugin</artifactId>
            <version>3.8.0</version>
        </plugin>
        <plugin>

          <groupId>org.apache.maven.plugins
                                 </groupId>
            <artifactId>maven-surefire-
                       plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <argLine>
                    --illegal-access=permit
                </argLine>
            </configuration>
        </plugin>
        <plugin>

         <groupId>org.apache.maven.plugins
                                 </groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <argLine>
                    --illegal-access=permit
                </argLine>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.7.1</version>
        </plugin>
    </plugins>
</build>
<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</reporting>

测试类是

import org.junit.jupiter.Test;

public class InlineMockTest {

   @Test
   void testInlineMock() {

   }

}

1 个答案:

答案 0 :(得分:0)

由于测试库的范围设置为/src/test/java,并且测试代码在生产代码中不可见,因此测试必须位于test目录下。