【问题标题】:IllegalStateException while running spring boot tests via maven failsafe plugin.通过 Maven 故障安全插件运行 Spring Boot 测试时出现 IllegalStateException。
【发布时间】:2017-10-28 19:32:30
【问题描述】:

我在 IntelliJ 中创建了新的 spring boot 项目,我想将使用 spring boot 上下文的测试与简单的单元测试分开,所以我添加了 maven failsafe 插件。我的配置如下所示:

        <!--RUNNING UNIT TESTS-->
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <excludes>
                    <exclude>**/*IT.java</exclude>
                </excludes>
            </configuration>
        </plugin>

        <!--RUNNING INTEGRATION TESTS-->
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

我已经重命名了在 intellij 测试类中自动生成的匹配模式,测试看起来像这样:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ErpegApplicationTestIT {

    @Test
    public void contextLoads() {
    }

}

问题是,当我在 IntelliJ 上运行此测试时,一切正常。但是在我运行mvn verify 之后,我得到了:

[ERROR] initializationError(com.tbawor.ErpegApplicationTestIT)  Time elapsed: 0.005 s  <<< ERROR!
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @S
pringBootTest(classes=...) with your test

类命名有问题吗?我应该采取不同的方法来分离这些测试吗?

无论如何,感谢您的帮助。

【问题讨论】:

标签: java maven intellij-idea spring-boot maven-failsafe-plugin


【解决方案1】:

如果有人遇到这个问题,我已经找到了解决方案。你只需要简单地修改 pom.xml:

          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-failsafe-plugin</artifactId>
             <version>2.20</version>
             <configuration>
                 <additionalClasspathElements>
                     <additionalClasspathElement>${basedir}/target/classes</additionalClasspathElement>
                 </additionalClasspathElements>
             </configuration>
             <executions>
                 <execution>
                     <goals>
                         <goal>integration-test</goal>
                         <goal>verify</goal>
                     </goals>
                 </execution>
             </executions>
         </plugin>

【讨论】:

  • 如果能稍微解释一下变化就好了。例如有什么特别的变化?谢谢!
  • Spring Boot 应用程序和集成测试有类似的问题,错误是 java.lang.ClassNotFoundException。通过添加&lt;additionalClasspathElements&gt;,我的问题就解决了。
  • 很高兴听到这个消息:)
猜你喜欢
  • 2013-11-12
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
相关资源
最近更新 更多