如何将Mokito单元测试与Spring-Boot集成测试集成为一个?

摘要:Mokito 单元测试与 Spring-Boot 集成测试 版本说明 Java:1.8 JUnit:5.x Mokito:3.x H2:1.4.200 spring-boot-starter-test:2.3.9.RELEASE 前言:通常
Mokito 单元测试与 Spring-Boot 集成测试 版本说明 Java:1.8 JUnit:5.x Mokito:3.x H2:1.4.200 spring-boot-starter-test:2.3.9.RELEASE 前言:通常任何软件都会划分为不同的模块和组件。单独测试一个组件时,我们叫做单元测试。单元测试用于验证相关的一小段代码是否正常工作。 单元测试不验证应用程序代码是否和外部依赖正常工作。它聚焦与单个组件并且 Mock 所有和它交互的依赖。 集成测试主要用于发现用户端到端请求时不同模块交互产生的问题。 集成测试范围可以是整个应用程序,也可以是一个单独的模块,取决于要测试什么。 典型的 Spring boot CRUD 应用程序,单元测试可以分别用于测试控制器(Controller)层、DAO 层等。它不需要任何嵌入服务,例如:Tomcat、Jetty、Undertow。 在集成测试中,我们应该聚焦于从控制器层到持久层的完整请求。应用程序应该运行嵌入服务(例如:Tomcat)以创建应用程序上下文和所有 bean。这些 bean 有的可能会被 Mock 覆盖。 单元测试 单元测试的动机,单元测试不是用于发现应用程序范围内的 bug,或者回归测试的 bug,而是分别检测每个代码片段。 几个要点 快,极致的快,500ms 以内 同一个单元测试可重复运行 N 次 每次运行应得到相同的结果 不依赖任何模块 Gradle 引入 plugins { id 'java' id "org.springframework.boot" version "2.3.9.RELEASE" id 'org.jetbrains.kotlin.jvm' version '1.4.32' } apply from: 'config.gradle' apply from: file('compile.gradle') group rootProject.ext.projectDes.group version rootProject.ext.projectDes.version repositories { mavenCentral() } dependencies { implementation rootProject.ext.dependenciesMap["lombok"] annotationProcessor rootProject.ext.dependenciesMap["lombok"] implementation rootProject.ext.dependenciesMap["commons-lang3"] implementation rootProject.ext.dependenciesMap["mybatis-plus"] implementation rootProject.ext.dependenciesMap["spring-boot-starter-web"] implementation rootProject.ext.dependenciesMap["mysql-connector"] implementation rootProject.ext.dependenciesMap["druid"] testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.3.9.RELEASE' testImplementation rootProject.ext.dependenciesMap["h2"] implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" } test { useJUnitPlatform() } 引入 spring-boot-starter-test 做为测试框架。该框架已经包含了 JUnit5 和 Mokito 。 对 Service 层进行单元测试 工程结构 Domain 中定义 student 对象。
阅读全文