如何测试 Spring Boot 1.2.7 应用程序?

How to Test a Spring Boot 1.2.7 Application?

我需要测试旧的 Spring Boot Java 应用程序(Spring Boot 1.2.7 的版本Java 1.8) 而且我不想更改 Spring 版本(因为应用程序非常庞大,然后我将不得不非常重构代码)。

我想将不同的 table 列类型应用于我的桌面应用程序的输入,并测试应用程序是否正确确定它们。

但问题是,由于 Spring 的旧版本,我无法提取 @ExtendWith(SpringExtension.class)、@ExtendWith(MockitoExtension.class) 或 @ExtendWith(MockitoExtension.class) 之类的注释RunWith(SpringRunner.class) 启用 spring 引导功能,或 @SpringBootTest 加载完整的应用程序上下文以进行端到端集成测试。

我正在使用以下依赖项进行测试

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <version>1.3.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

我尝试升级 Spring 依赖项的版本以进行测试(以便能够包含注释)并保留现有项目的 Spring 版本,但随后发生了初始化错误。

如何启用 spring 引导功能进行测试?

最推荐的解决方案是升级整个项目。如果没有,最简单的解决方案是依靠 spring-boot-starter-test:

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

这意味着您将不得不依赖 JUnit 4 和旧版本的 Mockito、AssertJ 和 Spring 测试库。

这些是您可以使用的注释:

  • @ExtendWith(SpringExtension.class) / @RunWith(SpringRunner.class)@RunWith(SpringJUnit4ClassRunner.class)
  • @ExtendWith(MockitoExtension.class)@RunWith(MockitoJUnitRunner.class)
  • @SpringBootTest@SpringApplicationConfiguration(不是完全替换)

测试片(@DataJpaTest@WebMvcTest)是在 Spring boot 1.4 中引入的,因此您也不能依赖它们.

找出可能性的最佳方法是检查 reference documentation of Spring boot 1.2.7。 他们展示的一个例子是:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleDataJpaApplication.class)
public class CityRepositoryIntegrationTests {

    @Autowired
    CityRepository repository;

    // ...

}