章节目录:
简介
单元测试助手可用于为 Spring 组件创建和执行 JUnit 测试:@Controller、@RestController、@Component、@Repository 以及 @Service。通过分析代码,UTA 可以生成和预配置包含示例断言和初始值的可运行测试模板。在为 Spring 组件添加测试时,您可以选择创建:
- 标准 JUnit 测试
- 使用 Spring 测试框架并在 Spring 应用程序上下文中运行的 Spring 框架测试(详细信息,请参阅 Spring MVC 测试框架)
创建 Spring 框架测试时应确保为您的构建系统配置 spring-test
依赖项;请参阅配置构建系统以包含所需的库。
支持 Spring 框架测试
UTA 支持通过 Spring 依赖注入为 @Autowired 字段、Setter 方法及构造函数参数提供依赖。它会创建一个内部配置类,用于向 Spring 容器提供必要的 Bean。如果启用了模拟(请参阅配置首选项),所有依赖项都将作为模拟 Bean 添加。
Spring MVC 控制器中处理方法的测试
为 @Controller 和 @RestController 中处理方法创建的测试使用 MockMvc 进行配置。UTA 可以识别和配置请求体、响应体、响应 mime 类型、HTTP 方法、路径参数、查询参数、HTTP 头和会话属性的设置。
创建 Spring 测试
创建 Spring 测试的步骤:
- 选择 Parasoft> 首选项> 单元测试助手。
- 启用 Spring 框架测试> 启用创建操作选项。
- 在编辑器中选择一个 Spring 组件。UTA 将分析您的代码,并在单元测试助手视图中显示一个或多个选项。提供的选项包括:
- Regular 为所选方法创建标准 JUnit 测试——不使用 Spring 框架。
- Regular Spring 为所选方法创建 Spring 测试。
- 参数化创建参数化测试用例——不使用 Spring 框架。
- 参数化的 Spring 为所选方法创建参数化 Spring 测试用例。 - 选择一个选项。
生成的一个或多个测试将包括示例断言模板和 UTA 默认值。查看测试,取消示例断言的注释并修改值。
通过 UTA 创建的 Spring 测试不包括可选参数。例如,不会包括以下参数:
@RequestParam(value = "count", required = false)- 使用 UTA 运行测试以收集覆盖率信息并获取改进建议(请参阅使用单元测试助手执行单元测试)。为了便于在执行流程树中查找处理方法调用,大多数内部 Spring 调用都会被隐藏。
为私有方法创建 Spring 测试
UTA 允许为私有方法创建常规和参数化 Spring 测试,以实现更高的代码覆盖率。
- 选择 Parasoft> 首选项> 单元测试助手。
- 启用 Spring 框架测试> 启用创建操作选项。
- 启用测试创建选项> 为 private 方法创建测试选项。
- 在编辑器中选择一个私有 Spring 组件方法。
- 选择以下选项之一:
- 点击 Regular private 为所选私有方法创建常规测试——不使用 Spring 框架。
- 点击 Regular Spring 私有方法为所选私有方法创建常规 Spring 测试。
- 点击参数化的 private 为所选私有方法创建参数化测试——不使用 Spring 框架。
- 点击参数化的 Spring 私有方法为所选私有方法创建参数化 Spring 测试。
使用 ContextConfiguration 注解配置 Spring 测试
Spring 单元测试要求 bean 在测试执行时可用,以提供必要的依赖。默认情况下,UTA 会直接在测试用例中定义可用的 bean,方法是创建一个内部配置类,并在其中填充所需的 bean 方法。(注意:当您在 Spring Boot 项目中创建测试时,不会创建配置类,因为 Spring Boot 可以自动扫描依赖项)。
或者,您也可以提供对 XML 配置文件或独立 Java 配置类的引用,通过 @ContextConfiguration 注解配置 Spring 测试。
- 选择 Parasoft> 首选项> 单元测试助手。
- 启用 Spring 框架测试> 启用创建操作选项。
使用以下内容之一完成默认的 ContextConfiguration 属性字段:
-对一个或多个 XML 配置文件的引用。配置属性可能与以下内容类似:locations={"classpath:/**/FirstContext.xml", "classpath:/**/SecondContext.xml"}
- 对一个或多个单独 Java 配置类的引用。配置属性可能与以下内容类似:
classes={FirstConfigClass.class, SecondConfigClass.class}
示例
您可以使用对两个 XML 配置文件的引用来配置默认的 ContextConfiguration 属性选项:
生成的 Spring 单元测试将包含一个带有所配置属性的 ContextConfiguration 注解:
有关 ContextConfiguration 注解的更多详细信息,请参阅 Spring文档 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Configuration.html