线上论坛之单元测试

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

源码地址: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.mzph.cn/news/86003.shtml

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

相关文章

为您的SSH提提速

SSH是运维和开发人员接触比较多的工具&#xff0c;一般用SSH来连接远程服务器&#xff0c;这个是我的一些免费客户和企业客户经常使用的场景&#xff0c;当然SSH除了远程连接之外&#xff0c;还有很多额外的用途&#xff0c;比如SSH本身是具备代理功能的&#xff0c;我们也有一…

【Seata】seata的部署和集成

一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包&#xff0c;地址在http://seata.io/zh-cn/blog/download.html 当然&#xff0c;课前资料也准备好了&#xff1a; 2.解压 在非中文目录解压缩这个zip包&#xff0c;其目录结构如下&#xff1a; 3.修改配置 修…

【MySQL】索引

索引 索引是帮助 MySQL 高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c;这样就可以在这些数据结构上实现高级…

pyspark常用算子总结

欢迎关注微信公众号&#xff0c;更多优质内容会在微信公众号首发 1. pyspark中时间格式的数据转换为字符串格式的时间&#xff0c;示例代码 from datetime import datetimedate_obj datetime(2023, 7, 2) formatted_date date_obj.strftime("%Y-%m-%d %H:%M:%S")p…

【MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制】

文章目录 MySQL数据库事务操作、主从复制及Redis数据库读写分离、主从同步的实现机制ACID及如何实现事务隔离级别&#xff1a;MVCC 多版本并发控制MySQL数据库主从复制主从同步延迟怎么处理Redis 读写分离1.什么是主从复制2.读写分离的优点 Redis为什么快呢&#xff1f; MySQL数…

Docker初识

什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0c;环境不一定一致&#xff0c;会遇到…

Matlab图像处理-模式识别

模式识别 模式识别就是用计算的方法根据样本的特征将样本划分到一定的类别中去。模式识别就是通过计算机用数学技术方法来研究模式的自动处理和判读&#xff0c;把环境与客体统称为“模式”。模式识别以图像处理与计算机视觉、语音语言信息处理、脑网络组、类脑智能等为主要研…

十几张高清世界地图

十几张高清世界地图 仅供学习&#xff01;

pom.xml中解决“vulnerable dependency maven:org.yaml:snakeyaml:1.33“警告问题

问题 当我们引入依赖的时候&#xff0c;pom文件会有这样的提示&#xff0c;其大概的意思就是 maven:org.yaml:snakeyaml:1.30"表示通过Maven引入了一个潜在的安全漏洞依赖项"org.yaml:snakeyaml:1.30" 解决办法 其实我们就是要更改这个依赖的版本&#xff0c…

有效保护敏感数据的最佳实践

在当今数据驱动的环境中&#xff0c;数据就是力量&#xff0c;组织仍然高度关注如何利用其数据进行 BI、分析和其他业务驱动计划。 事实上&#xff0c;最近的研究表明&#xff0c;数据领导者的主要动机是对高质量分析洞察的需求&#xff0c;而不是合规性。 然而&#xff0c;…

eNSP基础网络学习-v02

一、eNSP 1.什么是eNSP eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台&#xff0c;主要对企业网络路由器、交换机进行软件仿真&#xff0c;完美呈现真实设备实景&#xff0c;支持大型网络模拟&#xff0c;让…

git reset origin --hard解决‘Your branch is ahead of ‘origin/xxxx‘ by xx commit.’

git reset origin --hard解决‘Your branch is ahead of origin/xxxx by xx commit.’ 如图&#xff1a; 之前是这么解决的解决git&#xff1a;Your branch is ahead of ‘XXX‘ by X commits-CSDN博客git删除/撤销远已经push到程服务器上某次代码提交场景&#xff1a;不小心把…

忽视日志吃大亏,手把手教你玩转 SpringBoot 日志

一、日志重要吗 程序中的日志重要吗&#xff1f; 在回答这个问题前&#xff0c;笔者先说个事例&#xff1a; ❝ 笔者印象尤深的就是去年某个同事&#xff0c;收到了客户反馈的紧急bug。尽管申请到了日志文件&#xff0c;但因为很多关键步骤没有打印日志&#xff0c;导致排查进…

K8S:pod集群调度及相关操作

文章目录 一.pod集群调度概念1.调度约束( List-Watch组件)2.List-Watch的工作机制&#xff08;1&#xff09;List-Watch的工作机制流程&#xff08;2&#xff09;List-Watch的工作机制图示 3.调度的过程&#xff08;1&#xff09;调度的任务&#xff08;2&#xff09;调度选择p…

求生之路2服务器搭建插件安装及详细的游戏参数配置教程windows

求生之路2服务器搭建插件安装及详细的游戏参数配置教程windows 大家好我是艾西&#xff0c;最近研究了下 l4d2&#xff08;求生之路2&#xff09;这款游戏的搭建以及架设过程。今天就给喜欢l4d2这款游戏的小伙伴们分享下怎么搭建架设一个自己的服务器。毕竟自己当服主是热爱游…

Unity Bolt 实现UI拖拽功能

最近在学习使用Bolt插件实现五代码对UGUI Image元素实现拖拽。先看效果 录制_2023_09_15_17_50_45_29 下面是实现方式介绍&#xff1a; 1&#xff1a;注册RectTransformUtility 在使用Bolt插件实现UI拖拽的功能&#xff0c;需要使用 RectTransformUtility.ScreenPointToLoca…

【微信小程序】文章设置

设置基本字体样式&#xff1a;行高、首行缩进 font-size: 32rpx;line-height: 1.6em;text-indent: 2em;padding: 20rpx 0;border-bottom: 1px dashed var(--themColor); 两端对齐 text-align: justify; css文字两行或者几行显示省略号 css文字两行或者几行显示省略号_css…

Verilog 不同编码风格对综合电路的影响

文章目录 示例 #1示例 #2示例 #3 Verilog是一种硬件描述语言&#xff08;HDL&#xff09;&#xff0c;用于设计数字电路和系统。统一、良好的代码编写风格&#xff0c;可以提高代码的可维护性和可读性。 同样的功能&#xff0c;不同的Verilog 编码风格也会对综合过程产生重大影…

java框架-Springboot3-基础特性+核心原理

文章目录 java框架-Springboot3-基础特性核心原理profiles外部化配置生命周期监听事件触发时机事件驱动开发SPISpringboot容器启动过程自定义starter java框架-Springboot3-基础特性核心原理 profiles 外部化配置 生命周期监听 事件触发时机 事件驱动开发 Component public c…

Vue的详细教程--Vue路由与nodejs

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Vue的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Vue路由是什么 二.使用Vue路由的步骤 1、…