【问题标题】:SpringBootTest annotation cannot be resolved to a typeSpringBootTest 注解无法解析为类型
【发布时间】:2018-09-13 08:18:44
【问题描述】:

我的 SpringBootTest 注解无法解析为类型。这里有同样的问题,但似乎添加依赖项

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.0.5.RELEASE</version>
    <scope>test</scope>
</dependency>

无法做到这一点。整个问题是我想使用 @ContextConfiguration 但它已被弃用,建议的做事方式是使用 @SpringBootTest(classes = MyMainClass.class)

【问题讨论】:

  • 好像spring-boot-starter-test 已损坏,请尝试将其从本地 maven 中删除并重新构建
  • 展示你的完整 pom?

标签: java spring maven annotations


【解决方案1】:

删除&lt;scope&gt; 后,我能够解决我的问题

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>2.2.2.RELEASE</version>
<!-- <scope>test</scope> -->
    </dependency>

【讨论】:

    【解决方案2】:

    尝试使用依赖 2.0.3。我现在正在使用这个版本。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>2.0.3.RELEASE</version>
        <!--<scope>test</scope>-->
    </dependency>
    

    【讨论】:

      【解决方案3】:

      如果您使用父启动器,则不需要在测试依赖项中定义版本,这可能会在加载时发生冲突。

      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.0.5.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
      </parent>
      

      所以完整的 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>com.kj</groupId>
          <artifactId>demo-multi-schema</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <packaging>jar</packaging>
      
          <name>demo</name>
          <description>Demo project for Spring Boot</description>
      
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.0.5.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
              <java.version>1.8</java.version>
          </properties>
      
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-data-jpa</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <scope>runtime</scope>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
              </dependency>
          </dependencies>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>
      
      
      </project>
      

      【讨论】:

        【解决方案4】:

        我会尝试在 Spring Test 类中使用 @RunWith 注释和 @Test 我有一个例子:

        import org.junit.Test;
        import org.junit.runner.RunWith;
        import org.springframework.boot.test.context.SpringBootTest;
        import org.springframework.test.context.junit4.SpringRunner;
        
        @RunWith(SpringRunner.class)
        @SpringBootTest
        public class YourClassAppTest {
        
            @Test
            public void contextLoads() {
            }
        
        }
        

        希望能解决问题

        【讨论】:

          猜你喜欢
          • 2017-02-19
          • 1970-01-01
          • 2015-10-22
          • 2013-12-14
          • 1970-01-01
          • 2021-08-28
          • 2015-06-10
          • 2015-11-22
          • 1970-01-01
          相关资源
          最近更新 更多