线上论坛之单元测试

对线上论坛进行单元测试的测试报告

源码地址:https://gitee.com/coisini-thirty-three/forum

一、用户部分(UserServiceImplTest)

1.创建普通用户

测试名称

createNormalUser()

测试源码

@Test
void createNormalUser() {
// 构造用户
User user = new User();
user.setUsername("TestUser");
user.setNickname("单元测试用户");
user.setPassword("123456");
user.setSalt("123456");
//调用Service
userService.createNormalUser(user);
System.out.println("注册成功");
// System.out.println("=================");
// user.setUsername("bitboy");
// userService.createNormalUser(user);
// System.out.println("注册成功");
}

测试结果
预期结果注册成功
实际结果注册成功

2.用户登录

测试名称

login()

测试源码@Test
    void login() throws JsonProcessingException {
        // 正常用户
        User user = userService.login("bitgirl", "123456");
        System.out.println(objectMapper.writeValueAsString(user));
    }
测试结果
预期结果返回用户信息
实际结果返回用户信息

3.根据用户名查询用户信息

测试名称

selectByName()

测试源码

@Test
void selectByName() throws JsonProcessingException {
User user = userService.selectByName("bitboy");
System.out.println(objectMapper.writeValueAsString(user));
System.out.println("==========================");
user = userService.selectByName("bitboy111");
System.out.println(objectMapper.writeValueAsString(user));
System.out.println("==========================");
// user = userService.selectByName(null);
// System.out.println(objectMapper.writeValueAsString(user));
}

测试结果
预期结果返回用户信息
实际结果返回用户信息·

4.根据Id查询用户信息

测试名称

selectById()

测试源码

@Test
void selectById() throws JsonProcessingException {
//bitboy
User user = userService.selectById(1l);
System.out.println(objectMapper.writeValueAsString(user));
//bitgril
user = userService.selectById(2l);
System.out.println(objectMapper.writeValueAsString(user));

//null
user = userService.selectById(20l);
System.out.println(objectMapper.writeValueAsString(user));
}

测试结果
预期结果返回用户信息
实际结果返回用户信息

5.用户发帖数 +1

测试名称

addOneArticleCountById()

测试源码

@Test
//加了事务的注解之后,测试的结果不在持久化到数据库,测试通过之后,写入的

数据会被回滚,从而不污染数据库
@Transactional // 更新的测试,建议在方法级别上加入事务注解,
void addOneArticleCountById() {
userService.addOneArticleCountById(1l);
System.out.println("更新成功");

userService.addOneArticleCountById(2l);
System.out.println("更新成功");

// userService.addOneArticleCountById(100l);
// System.out.println("更新成功");

}

测试结果
预期结果更新成功
实际结果更新成功

6.用户发帖数 -1

测试名称

subOneArticleCountById()

测试源码

@Test
void subOneArticleCountById() {
userService.subOneArticleCountById(1l);
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更新成功

7.修改个人信息

测试名称

modifyInfo()

测试源码

@Test
@Transactional
void modifyInfo() {
User user = new User();
user.setId(2l);
user.setNickname("bitgirl");
user.setGender((byte) 0);
user.setPhoneNum("123456789");
user.setEmail("123456@qq.com");
user.setRemark("我是一个美丽的小女孩");
//调用service
userService.modifyInfo(user);
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更新成功

8.修改用户密码

测试名称

modifyPassword()

测试源码

@Test
void modifyPassword() {
userService.modifyPassword(1l,"123456","123");
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更像成功

二、帖子部分(ArticleServiceImplTest)

1.查询所有的帖子集合

测试名称

selectAll()

测试源码

@Test
void selectAll() throws JsonProcessingException {
List<Article> result = articleService.selectAll();
System.out.println(objectMapper.writeValueAsString(result));
}

测试结果
预期结果返回帖子列表
实际结果返回帖子列表

2.根据板块id查询帖子列表 

测试名称

selectByBoardId()

测试源码

@Test
void selectByBoardId() throws JsonProcessingException {
//Java板块
List<Article> articles = articleService.selectByBoardId(1l);
System.out.println(objectMapper.writeValueAsString(articles));
//c++ 板块
articles = articleService.selectByBoardId(2l);
System.out.println(objectMapper.writeValueAsString(articles));
//不存在的
articles = articleService.selectByBoardId(100l);
System.out.println(objectMapper.writeValueAsString(articles));
}

测试结果
预期结果返回帖子列表
实际结果返回帖子列表

3.发布新贴

测试名称

create()

测试源码

@Test
@Transactional
void create() {
Article article = new Article();
article.setBoardId(9l);
article.setUserId(1l);
article.setTitle("单元测试标题1");
article.setContent("单元测试内容1");
//调用Service
articleService.create(article);
System.out.println("写入成功");
}

测试结果
预期结果写入成功
实际结果写入成功

4.根据帖子id查询帖子列表

测试名称

selectById()

测试源码

@Test
void selectById() throws JsonProcessingException {
Article article = articleService.selectById(1l);
System.out.println(objectMapper.writeValueAsString(article));

article = articleService.selectById(19l);
System.out.println(objectMapper.writeValueAsString(article));

article = articleService.selectById(900l);
System.out.println(objectMapper.writeValueAsString(article));
}

测试结果
预期结果返回帖子信息
实际结果返回帖子信息

5.根据用户id查询帖子列表

测试名称

selectByUserId()

测试源码

@Test
void selectByUserId() throws JsonProcessingException {
List<Article> articles = articleService.selectByUserId(1l);
System.out.println(objectMapper.writeValueAsString(articles));

articles = articleService.selectByUserId(2l);
System.out.println(objectMapper.writeValueAsString(articles));

articles = articleService.selectByUserId(100l);
System.out.println(objectMapper.writeValueAsString(articles));
}

测试结果
预期结果返回帖子列表
实际结果返回帖子列表

6.更新帖子的访问数量

测试名称

updateVisitCountById()

测试源码

@Test
void updateVisitCountById() {
articleService.updateVisitCountById(1l);
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更新成功

7.根据帖子id更新帖子标题和内容

测试名称

modify()

测试源码

@Test
void modify() {
articleService.modify(25l,"测试提示效果111","测试贴是效果222");
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更新成功

8.根据Id删除帖子

测试名称

void deleteById()

测试源码

@Test
@Transactional
void deleteById() {
articleService.deleteById(16l);
System.out.println("删除成功");
}

测试结果
预期结果删除成功
实际结果删除成功

9.根据article更新对象

测试名称

updateById()

测试源码

@Test
@Transactional
void updateById() {
Article article = new Article();
article.setId(1l);
article.setUpdateTime(new Date());
articleService.updateById(article);
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更新成功

10.点赞帖子

测试名称

thumbsUpById()

测试源码

@Test
@Transactional
void thumbsUpById() {
articleService.thumbsUpById(1L);
System.out.println("点赞成功");
}

测试结果
预期结果点赞成功
实际结果点赞成功

三、帖子回复部分(ArticleReplyServiceImplTest)

1.根据帖子Id查询回复列表

测试名称

selectByArticleId()

测试源码

@Test
void selectByArticleId() throws JsonProcessingException {
List<ArticleReply> articleReplies = articleReplyService.selectByArticleId(1l);
// System.out.println(objectMapper.writeValueAsString(articleReplies));

// articleReplies = articleReplyService.selectByArticleId(100l);
// System.out.println(objectMapper.writeValueAsString(articleReplies));

Assertions.assertNotNull(articleReplies);
System.out.println("根据帖子Id查询回复列表");
}

测试结果
预期结果返回帖子列表
实际结果返回帖子列表

2.新增一个回复记录

测试名称

create()

测试源码

@Test
@Transactional
void create() {
ArticleReply articleReply = new ArticleReply();
articleReply.setArticleId(3l);
articleReply.setPostUserId(2l);
articleReply.setContent("单元测试");
//调用service
articleReplyService.create(articleReply);
System.out.println("回复成功");
}

测试结果
预期结果回复成功
实际结果回复成功

四、板块部分(BoardServiceImplTest)

1.查询首页的板块列表

测试名称

selectByNum()

测试源码

@Test
void selectByNum() throws JsonProcessingException {
List<Board> boards = boardService.selectByNum(9);
System.out.println(objectMapper.writeValueAsString(boards));
}

测试结果
预期结果返回板块列表
实际结果返回板块列表

2.根据id查询板块信息

测试名称

selectById()

测试源码

@Test
void selectById() throws JsonProcessingException {
//Java
Board board = boardService.selectById(1l);
System.out.println(objectMapper.writeValueAsString(board));
//c++
board = boardService.selectById(2l);
System.out.println(objectMapper.writeValueAsString(board));
//不存在
board = boardService.selectById(100l);
System.out.println(objectMapper.writeValueAsString(board));
}

测试结果
预期结果返回板块信息
实际结果返回板块信息

3.版块中的帖子数量 +1

测试名称

addOneArticleCountById()

测试源码

@Test
void addOneArticleCountById() {
boardService.addOneArticleCountById(1l);
System.out.println("更新成功");

boardService.addOneArticleCountById(2l);
System.out.println("更新成功");

}

测试结果
预期结果更新成功
实际结果更新成功

4.版块中的帖子数量 -1

测试名称

subOneArticleCountById()

测试源码

@Test
@Transactional
void subOneArticleCountById() {
boardService.subOneArticleCountById(7l);
System.out.println("更新成功");
}

测试结果
预期结果更新成功
实际结果更新成功

五、站内信部分(MessageServiceImplTest)

1.发送站内信息

测试名称

create()

测试源码

@Test
@Transactional
void create() {
Message message = new Message();
message.setPostUserId(2l);
message.setReceiveUserId(1l);
message.setContent("单元测试");
messageService.create(message);
System.out.println("发送成功");
}

测试结果
预期结果发送成功
实际结果发送成功

2.根据Id查询站内信

测试名称

selectById()

测试源码

@Test
void selectById() throws JsonProcessingException {
Message message = messageService.selectById(1l);
System.out.println(objectMapper.writeValueAsString(message));
}

测试结果
预期结果返回站内信
实际结果返回站内信

3.根据用户Id查询该用户未读数量

测试名称

selectUnreadCount()

测试源码

@Test
void selectUnreadCount() {
Integer count = messageService.selectUnreadCount(1l);
System.out.println("未读数量为: " + count);
count = messageService.selectUnreadCount(2l);
System.out.println("未读数量为: " + count);
count = messageService.selectUnreadCount(20l);
System.out.println("未读数量为: " + count);
}

测试结果
预期结果返回未读数量
实际结果返回未读数量

4.根据接收者用户Id查询所有站内信

测试名称

selectByReceiveUserId()

测试源码

@Test
void selectByReceiveUserId() throws JsonProcessingException {
List<Message> messages = messageService.selectByReceiveUserId(1l);
System.out.println(objectMapper.writeValueAsString(messages));

messages = messageService.selectByReceiveUserId(2l);
System.out.println(objectMapper.writeValueAsString(messages));

messages = messageService.selectByReceiveUserId(20l);
System.out.println(objectMapper.writeValueAsString(messages));
}

测试结果
预期结果返回回复私信
实际结果返回回复私信

5.更新指定站内信的状态

测试名称

updateStateById()

测试源码

@Test
@Transactional
void updateStateById() {
messageService.updateStateById(1l, (byte) 1);
System.out.println("更新成功");
}

测试结果
预期结果更新时间
实际结果更新时间

6.回复站内信

测试名称

reply()

测试源码

@Test
void reply() {
// 构建对象
Message message = new Message();
message.setPostUserId(1l);
message.setReceiveUserId(2l);
message.setContent("单元测试回复");
// 调用service
messageService.reply(2l, message);
System.out.println("回复成功");
}

测试结果
预期结果回复成功
实际结果回复成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/135179.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针和数组笔试题解析

大家好&#xff0c;我们今天来学习有关于指针和数组的笔试题解析。 在之前的C语言学习中我们知道了数组名代表的是数组首元素的地址&#xff0c;而有两个例外&#xff0c;就是sizeof中和&符操作取的就是整个数组的地址&#xff0c;那么我们今天的学习重点就是这些关于数组…

哈希(hash)——【C++实现】

本章gitee代码仓库&#xff1a;Hash 文章目录 &#x1f490;1. 哈希概念&#x1f33b;2. 哈希冲突&#x1f33c;3. 哈希函数&#x1f338;3.1 哈希函数设计原则&#x1f338;3.2 常见哈希函数 &#x1fab4;4. 哈希冲突解决方案&#x1f331;4.1 闭散列——开放定址法&#x1f…

【ROS】Ubuntu20.04+ROS Noetic 配置PX4-v1.12.2和Gazebo11联合仿真环境【教程】

【ROS】Ubuntu20.04ROS Noetic 配置PX4-v-v1.12.2和Gazebo11联合仿真环境【教程】 文章目录 【ROS】Ubuntu20.04ROS Noetic 配置PX4-v-v1.12.2和Gazebo11联合仿真环境【教程】0. 安装UbuntuROS1. 安装依赖2. 安装QGC地面站3. 配置PX4-v1.12.23.1 安装PX43.2 测试PX4是否成功安装…

Java常见面试题(含答案,持续更新中~~)

目录 1、JVM、JRE和JDK的关系 2、什么是字节码&#xff1f;采用字节码的最大好处是什么 3、Java和C的区别与联系 4、Java和GO的区别与联系 5、 和 equals 的区别是什么&#xff1f; 6、Oracle JDK 和 OpenJDK 的对比 7、String 属于基础的数据类型吗&#xff1f; 8、fi…

外星人入侵游戏-(创新版)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

【Tensorflow 2.12 电影推荐项目搭建】

Tensorflow 2.12 电影推荐项目搭建 学习笔记工具、环境创建项目项目配置安装相关python包召回模型实现排序模型实现实现电影推荐导入模块设置要推荐的用户召回推荐排序推荐推荐结果结尾学习笔记 Tensorflow 2.12 电影推荐项目搭建记录~ Tensorflow是谷歌开源的机器学习框架,可…

再次理解Android账号管理体系

目录 ✅ 0. 需求 &#x1f4c2; 1. 前言 &#x1f531; 2. 使用 2.1 账户体系前提 2.2 创建账户服务 2.3 操作账户-增删改查 &#x1f4a0; 3. 源码流程 ✅ 0. 需求 试想&#xff0c;自己去实现一个账号管理体系&#xff0c;该如何做呢&#xff1f; ——————————…

MySQL 学习笔记(基础)

首先解释数据库DataBase&#xff08;DB&#xff09;&#xff1a;即存储数据的仓库&#xff0c;数据经过有组织的存储 数据库管理系统DataBase Management System&#xff08;DBMS&#xff09;&#xff1a;管理数据库的软件 SQL&#xff08;Structured Query Language&#xf…

3D视觉到三维视觉之结构光

3D视觉是计算机视觉的终极体现形式 2D视觉技术主要在二维空间下完成工作&#xff0c;三维信息基本上没有得到任何利用&#xff0c;而三维信息才真正能够反映物体和环境的状态&#xff0c;也更接近人类的感知模式。近年来&#xff0c;学术界和工业界推出了一系列优秀的算法和产…

redis 哨兵(sentinel)机制

1. 前言 sentinel&#xff08;哨兵&#xff09;是Redis 的高可用性解决方案之一。通过哨兵可以创建一个当主服务器出现故障时自动将从服务器升级为主服务器的分布式系统&#xff0c;解决了主从复制出现故障时需要人为干预的问题。 redis 的主从复制的作用有数据预热、负载均衡…

【初阶数据结构】树(tree)的基本概念——C语言

目录 一、树&#xff08;tree&#xff09; 1.1树的概念及结构 1.2树的相关概念 1.3树的表示 1.4树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 二、二叉树的概念及结构 2.1二叉树的概念 2.2现实中真正的二叉树 2.3特殊的二叉树 2.4二叉树的性质…

使用 Feature Flags 实现数据库灰度迁移的监控与可观测性

作者&#xff1a;观测云与胡博 场景描述 很多企业会遇到数据库升级、或数据库迁移的情况&#xff0c;尤其是在自建数据库服务向云数据库服务、自建机房向云机房、旧数据库向新数据库迁移等场景。 然而&#xff0c;我们需要在整个移植过程中保证其稳定性、避免数据遗失、服务宕…

获取spring容器中的bean实例

在开发过程中&#xff0c;我们可能需要动态获取spring容器中的某个bean的实例&#xff0c;此时我们就会用到ApplicationContext spring应用上下文&#xff0c;这里做一下记录&#xff0c;网上很多类似的的工具类。 先写好工具类再测试一下是否好用 工具类&#xff1a; packag…

【pytest】生成测试报告

0. 脚本&#xff1a; fixture/test_fixtures_02.py # 功能函数 import pytestdef multiply(a, b):return a * bclass TestMultiply:# fixturesclassmethoddef setup_class(cls):print("setup_class>")classmethoddef teardown_class(cls):print("teardown_c…

最小二乘法

Least Square Method 1、相关的矩阵公式2、线性回归3、最小二乘法3.1、损失函数&#xff08;Loss Function&#xff09;3.2、多维空间的损失函数3.3、解析法求解3.4、梯度下降法求解 1、相关的矩阵公式 P r e c o n d i t i o n : ξ ∈ R n , A ∈ R n ∗ n i : σ A ξ σ ξ…

Linux驱动之INPUT设备驱动

目录 一、开发环境 二、编写按键input设备的注册与事件上报 2.1 修改设备树文件 1 添加 pinctrl 节点 2、添加 KEY 设备节点 3、检查 PIN 是否被其他外设使用 2.2 驱动程序编写 2.3 测试APP编写 2.4 运行测试 三、Linux内核自带按键input设备驱动 3.1 自带按键驱动程序源码简…

C#实现钉钉自定义机器人发送群消息帮助类

一、自定义机器人发送群消息使用场景 在企业中,针对一些关键指标内容(如每天的生产产量、每天的设备报警信息等信息),需要同时给多人分享,此时就可以将需要查看这些数据的人员都拉到一个群中,让群里的机器人将这些关键指标内容推送到群里即可【(目前已实现在钉钉群里创建…

Web 器学习笔记(基础)

Filter 过滤器 概念&#xff1a;表示过滤器&#xff0c;是 JavaWeb 三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一 作用&#xff1a;顾名思义可以过滤资源的请求&#xff0c;并实现特殊的需求 Filter 接口及它核心的 doFilter() 方法&#xff08;执行前就是…

Excel 公式函数:学习基本示例

数据准备 对于本教程&#xff0c;我们将使用以下数据集。 家居用品预算 S / N项目数量价格小计价格适中吗&#xff1f;1芒果96002橘子312003番茄125004食用油565005汤力水133900 房屋建筑项目时间表 S/NITEM开始日期结束日期持续时间&#xff08;天&#xff09;1调查土地0…

000_差分信号

1.什么是差分信号 差分信号又叫做差模信号&#xff0c;使用差分信号传输时&#xff0c;需要2根信号线&#xff0c;这2根信号线的振幅相等&#xff0c;相位相反&#xff0c;通过2根信号线的电压差值来表示逻辑0和逻辑1。 差分信号表示逻辑值如下图&#xff1a; 2.差分信号的特…