滚雪球学MyBatis-Plus(13):测试与部署

前言

在上期内容中,我们深入探讨了 MyBatis Plus 的高级功能,包括自定义 SQL 注解、批量操作以及数据加密与解密。这些功能极大地提高了开发效率,并增强了数据操作的灵活性和安全性。

本期内容将重点介绍 MyBatis Plus 的测试与部署。我们将学习如何编写单元测试和集成测试,确保代码的正确性和可靠性。然后,我们将讨论项目的打包与部署流程,帮助你将开发的应用程序顺利发布到生产环境中。

一、测试概述

测试是软件开发过程中至关重要的一环。通过测试,我们可以验证代码的正确性,发现潜在的问题,并确保系统的稳定性。常见的测试类型包括单元测试、集成测试和功能测试。

二、编写单元测试

单元测试是针对软件中的最小可测试单元(通常是类或方法)进行验证的测试。单元测试的主要目的是确保每个单元的行为符合预期。

  1. 添加依赖

    • pom.xml 中添加 JUnit 和 Spring Boot Test 的依赖:

      xml 复制代码
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
      </dependency>
  2. 编写单元测试类

    • src/test/java/com/example/mybatisplusdemo 目录下创建 UserServiceTest 类,编写测试方法:

      java 复制代码
      package com.example.mybatisplusdemo;
      
      import com.example.mybatisplusdemo.entity.User;
      import com.example.mybatisplusdemo.service.UserService;
      import org.junit.jupiter.api.Test;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.test.context.SpringBootTest;
      import java.util.List;
      
      @SpringBootTest
      public class UserServiceTest {
      
          @Autowired
          private UserService userService;
      
          @Test
          public void testSaveUser() {
              User user = new User();
              user.setName("Test User");
              user.setAge(30);
              user.setEmail("[email protected]");
              boolean result = userService.save(user);
              assert result;
          }
      
          @Test
          public void testFindUser() {
              List<User> users = userService.list();
              assert users.size() > 0;
          }
      
          @Test
          public void testUpdateUser() {
              User user = userService.getById(1L);
              user.setAge(35);
              boolean result = userService.updateById(user);
              assert result;
          }
      
          @Test
          public void testDeleteUser() {
              boolean result = userService.removeById(1L);
              assert result;
          }
      }
  3. 运行单元测试

    • 在 IDE 中运行 UserServiceTest 类,确保所有测试用例通过。
三、编写集成测试

集成测试是对多个组件或模块进行联合测试,主要目的是验证它们在一起工作时是否正确。

  1. 编写集成测试类

    • src/test/java/com/example/mybatisplusdemo 目录下创建 UserControllerTest 类,编写测试方法:

      java 复制代码
      package com.example.mybatisplusdemo;
      
      import com.example.mybatisplusdemo.entity.User;
      import com.fasterxml.jackson.databind.ObjectMapper;
      import org.junit.jupiter.api.Test;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.boot.test.context.SpringBootTest;
      import org.springframework.boot.test.web.client.TestRestTemplate;
      import org.springframework.http.HttpEntity;
      import org.springframework.http.HttpMethod;
      import org.springframework.http.ResponseEntity;
      
      import java.util.List;
      
      @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
      public class UserControllerTest {
      
          @Autowired
          private TestRestTemplate restTemplate;
      
          @Autowired
          private ObjectMapper objectMapper;
      
          @Test
          public void testAddUser() throws Exception {
              User user = new User();
              user.setName("Integration Test User");
              user.setAge(28);
              user.setEmail("[email protected]");
              HttpEntity<User> request = new HttpEntity<>(user);
              ResponseEntity<String> response = restTemplate.postForEntity("/user/add", request, String.class);
              assert response.getStatusCodeValue() == 200;
          }
      
          @Test
          public void testGetUsers() {
              ResponseEntity<List> response = restTemplate.getForEntity("/user/list", List.class);
              assert response.getStatusCodeValue() == 200;
              assert response.getBody().size() > 0;
          }
      
          @Test
          public void testUpdateUser() throws Exception {
              User user = new User();
              user.setName("Integration Test User");
              user.setAge(30);
              user.setEmail("[email protected]");
              HttpEntity<User> request = new HttpEntity<>(user);
              ResponseEntity<String> response = restTemplate.exchange("/user/update", HttpMethod.PUT, request, String.class);
              assert response.getStatusCodeValue() == 200;
          }
      
          @Test
          public void testDeleteUser() {
              ResponseEntity<String> response = restTemplate.exchange("/user/delete?name=Integration Test User", HttpMethod.DELETE, null, String.class);
              assert response.getStatusCodeValue() == 200;
          }
      }
  2. 运行集成测试

    • 在 IDE 中运行 UserControllerTest 类,确保所有测试用例通过。
四、项目打包

在完成所有开发和测试后,我们需要将项目打包,以便部署到生产环境中。

  1. 打包命令

    • 在项目根目录下运行 Maven 打包命令:

      bash 复制代码
      mvn clean package
  2. 生成的 JAR 文件

    • 打包完成后,在 target 目录下生成一个可执行的 JAR 文件,例如 mybatis-plus-demo-0.0.1-SNAPSHOT.jar
五、项目部署
  1. 部署到服务器

    • 将生成的 JAR 文件上传到目标服务器。
  2. 运行 JAR 文件

    • 在服务器上运行以下命令启动应用:

      bash 复制代码
      java -jar mybatis-plus-demo-0.0.1-SNAPSHOT.jar
  3. 访问应用

    • 打开浏览器,访问应用的 URL,验证应用是否正常运行。
六、总结

通过本篇文章,你已经学会了如何编写单元测试和集成测试,以确保代码的正确性和可靠性。同时,我们还介绍了项目的打包与部署流程,帮助你将开发的应用程序顺利发布到生产环境中。测试与部署是软件开发中不可或缺的一部分,通过这些步骤,你可以保证项目的高质量和稳定运行。

下期预告

在下一期内容中,我们将总结整个 MyBatis Plus 系列教程的内容,并推荐一些拓展阅读资料和学习方向。我们还会分享一些实际项目中的经验和技巧,帮助你更好地应用 MyBatis Plus 进行开发。敬请期待!

通过本系列教程的学习,你已经系统地掌握了 MyBatis Plus 的各项功能,从基础到高级,从理论到实践,全面提升了你的开发技能。希望你在学习过程中能够有所收获,并应用到实际项目中。让我们继续这段学习之旅吧!

相关推荐
Think Spatial 空间思维8 小时前
【SSL部署与优化】如何为网站启用HTTPS:从Let‘s Encrypt免费证书到Nginx配置
nginx·https·证书·部署·ssl·配置·优化
song_ly0012 天前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试
Violet_Stray6 天前
【Ollama】docker离线部署Ollama+deepseek
docker·部署·ollama·deepseek
试着6 天前
【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
面试·职场和发展·自动化·测试
waves浪游7 天前
论坛系统测试报告
测试工具·测试用例·bug·测试
灰色人生qwer8 天前
使用JMeter 编写的测试计划的多个线程组如何生成独立的线程组报告
jmeter·测试
.格子衫.8 天前
powershell批处理——io校验
测试·powershell
试着8 天前
【AI面试准备】TensorFlow与PyTorch构建缺陷预测模型
人工智能·pytorch·面试·tensorflow·测试
waves浪游9 天前
博客系统测试报告
测试工具·测试用例·bug·测试
智云软件测评服务11 天前
数字化时代下,软件测试中的渗透测试是如何保障安全的?
渗透·测试·漏洞