线上论坛之单元测试

2023-09-17 16:39:33

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

源码地址: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("回复成功");
}

测试结果
预期结果回复成功
实际结果回复成功
更多推荐

9月13-14日上课内容 第三章 ELK日志分析系统及部署实例

本章结构ELK日志分析系统简介ELK日志分析系统分为ElasticsearchLogstashKibana日志处理步骤1.将日志进行集中化管理2.将日志格式化(Logstash)并输出到Elasticsearch3.对格式化后的数据进行索引和存储(Elasticsearch)4.前端数据的展示(Kibana)Elast

python自(2)切片 字典 遍历删除添加修改查询定义函数函数返回值作用域序列化异常报错urllib使用一个类型六个方法下载 视频音频图片

切片##切片#s='helloword'##下标索引为0的#print(s[0])#h##左闭右开(左是下标开始的,右是几个索引值)例如从0开始算4个索引值#print(s[0:4])#hell##更改起始值的开始位置#print(s[1:])#elloword##下标结束位置#print(s[:5])#hello##

二叉搜索树(BST,Binary Search Tree)

文章目录1.二叉搜索树1.1二叉搜索树概念1.2二叉搜索树的查找1.3二叉搜索树的插入1.4二叉搜索树的删除2二叉搜索树的实现3二叉搜索树的应用3.1二叉搜索树的性能分析1.二叉搜索树1.1二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都

面试官:用Vue3.0 写过组件吗?如果想实现一个 Modal你会怎么设计?

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录一、组件设计二、需求分析三、实现流程目录结构组件内容实现API形式事件处理其他完善一、组件设计组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式现在有一个场景,点击新增与编辑都弹框出

linux文件权限

借东风七星坛上卧龙登,一夜东风江水腾。不是孔明施巧计,周郎安得逞才能?基本权限文件权限设置:可以使某个用户或者某个组能够对文件进行某些操作权限对象:u===>属主g===>属组o===>其他人----------------基本权限类型r--->read读--->4w--->write写--->2x--->exec执行

Vue2+Vue3

文章目录Vue快速上手Vue是什么第一个Vue程序插值表达式Vue核心特性:响应式Vue指令v-htmlv-show与v-ifv-else与v-else-ifv-onv-bindv-forv-model指令修饰符计算属性watch侦听器(监视器)watch——简写watch——完整写法Vue生命周期和生命周期的四个阶段

【Linux学习笔记】权限

1.普通用户和root用户权限之间的切换2.权限的三个w2.1.什么是权限(what)2.1.1.用户角色2.1.2.文件属性2.2.怎么操作权限呢?(how)2.2.1.ugo+-rwx方案2.2.2.八进制方案2.2.3.文件权限的初始模样2.2.4.进入一个目录,需要什么权限呢?2.3.为什么要有权限呢?(why

计算机毕业设计 基于SSM+Vue的校园短期闲置资源置换平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟————————————————计算机毕业设计题目《10

强化学习从基础到进阶--案例与实践[7.1]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解项目实战

【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现专栏详细介绍:【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现对于深度强化学习这块规划为:基础单智能算法教学(g

01-初识HTML

01-初识HTML学习目标:理解HTML的基本语法掌握排版标签实现标题等效果相对路径和绝对路径媒体标签(图片、音频、视频)超链接一、基础认知了解网页组成和五大浏览器明确Web标准的构成1.1认识网页以下网页有哪些部分组成文字、图片、音频、视频、超链接…那么这个网页背后本质是什么?前端的代码是通过什么软件转换成用户眼中的

高精度地图定位在高速公路自动驾驶系统中的应用

【摘要】自动驾驶已经成为全球汽车产业的战略发展方向,其中L3级高速公路自动驾驶是最有可能率先落地的自动驾驶系统,高精度地图和定位系统是自动驾驶系统的关键一部分,近年来发展迅速,已经达到可量产状态。文章首先分析了自动驾驶和高精度地图定位的发展现状,然后,对高精度地图和定位系统在自动驾驶系统的地理围栏判定和感知冗余方面的应

热文推荐