章节目录:

简介

单元测试助手可用于为 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 Boot

当您在 Spring Boot 项目中创建测试时,不会添加内部配置类。

创建 Spring 测试

创建 Spring 测试的步骤:

  1. 选择 Parasoft> 首选项> 单元测试助手
  2. 启用 Spring 框架测试> 启用创建操作选项。
  3. 在编辑器中选择一个 Spring 组件。UTA 将分析您的代码,并在单元测试助手视图中显示一个或多个选项。提供的选项包括:
    - Regular 为所选方法创建标准 JUnit 测试——不使用 Spring 框架
    - Regular Spring 为所选方法创建 Spring 测试。
    - 参数化创建参数化测试用例——不使用 Spring 框架
    - 参数化的 Spring 为所选方法创建参数化 Spring 测试用例。
  4. 选择一个选项。
  5. 生成的一个或多个测试将包括示例断言模板和 UTA 默认值。查看测试,取消示例断言的注释并修改值。

    通过 UTA 创建的 Spring 测试不包括可选参数。例如,不会包括以下参数:
    @RequestParam(value = "count", required = false)

  6. 使用 UTA 运行测试以收集覆盖率信息并获取改进建议(请参阅使用单元测试助手执行单元测试)。为了便于在执行流程树中查找处理方法调用,大多数内部 Spring 调用都会被隐藏。

为私有方法创建 Spring 测试

UTA 允许为私有方法创建常规和参数化 Spring 测试,以实现更高的代码覆盖率。

  1. 选择 Parasoft> 首选项> 单元测试助手
  2. 启用 Spring 框架测试> 启用创建操作选项。
  3. 启用测试创建选项> 为 private 方法创建测试选项。
  4. 在编辑器中选择一个私有 Spring 组件方法。
  5. 选择以下选项之一:
    - 点击 Regular private 为所选私有方法创建常规测试——不使用 Spring 框架。
    - 点击 Regular Spring 私有方法为所选私有方法创建常规 Spring 测试。
    - 点击参数化的 private 为所选私有方法创建参数化测试——不使用 Spring 框架
    - 点击参数化的 Spring 私有方法为所选私有方法创建参数化 Spring 测试。

默认情况下,为 private 方法创建测试选项被禁用,因为行业最佳实践是通过为调用私有方法的可访问方法创建测试来测试私有方法,而不是直接为私有方法创建测试。

使用 ContextConfiguration 注解配置 Spring 测试

Spring 单元测试要求 bean 在测试执行时可用,以提供必要的依赖。默认情况下,UTA 会直接在测试用例中定义可用的 bean,方法是创建一个内部配置类,并在其中填充所需的 bean 方法。(注意:当您在 Spring Boot 项目中创建测试时,不会创建配置类,因为 Spring Boot 可以自动扫描依赖项)。 

或者,您也可以提供对 XML 配置文件或独立 Java 配置类的引用,通过 @ContextConfiguration 注解配置 Spring 测试。

  1. 选择 Parasoft> 首选项> 单元测试助手
  2. 启用 Spring 框架测试> 启用创建操作选项。
  3. 使用以下内容之一完成默认的 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

  • No labels