如何测试 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;
// ...
}
我需要测试旧的 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;
// ...
}