《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(10)

简介: 《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(10)

《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(9) https://developer.aliyun.com/article/1232279?groupCode=java


八、不必要的JSON序列化


以上章节,都是说JSON资源文件在单元测试中如何运用,如何利用JSON资源文件把单元测试编写得更优雅。有时候,任何手段都有两面性,过渡依赖JSON资源文件测试,也会把单元测试复杂化。这里,作者总结了几个例子以示说明。


1.完全透传的对象


1)完全透传的参数对象


在测试方法中,有些参数没有被任何修改,只是完全被透传而已。

 

被测方法:


image.png

 

测试用例:

image.png

其中,不需要ArgumentCaptor去捕获userDAO.batchCreate的参数并验证参数值,这里只需要验证createList是不是同一个对象即可。

 

2) 完全透传的返回对象

 

在测试方法中,有些返回值没有被任何修改,只是完全被透传而已。

 

被测方法:

 

image.png

测试用例:

image.png

其中,userList对象不需要构造数据,只需要验证是不是同一个对象即可。


2.完全透传的属性


1)完全透传的参数值属性

在测试方法中,有些参数值属性没有被任何修改,只是完全被透传而已。

被测方法:

image.png

测试用例:

image.png

其中,user对象不需要构造数据,只需要验证是不是同一个对象即可。


2)完全透传的返回值属性


在测试方法中,有些返回值属性没有被任何修改,只是完全被透传而已。

被测方法:


image.png

测试用例:

image.png

其中,user对象不需要构造数据,只需要验证是不是同一个对象即可。


3.仅用少数字段的对象


1)仅用少数字段的参数值对象


在测试方法中,有些参数值对象字段虽多,但只会用到其中少数字段。

被测方法:

image.png

测试用例:

image.png

其中,不需要构造参数值userCreate的所有属性字段,只需构造使用到的name属性字段即可。

 

1) 仅用少数字段的返回值对象

 

在测试方法中,有些返回值对象字段虽多,但只会用到其中少数字段。

 

被测方法:

image.png

 

测试用例:

image.png

其中,不需要构造返回值user的所有属性字段,只需构造使用到的roleId属性字段即可。

 

4. 使用new还是mock初始化对象?

 

在上面案例中,我们都采用new来初始化对象并采用set来模拟属性值的。有些同学会问,为什么不采用mock来初始化对象、用doReturn-when来模拟属性值?我想说,都是一样的效果,只是前者显得更简洁而已。

 

关于使用new还是mock初始化对象,这个问题在网上一直有争论,双方都各有自己的理由。

 

这里,按照作者的个人使用习惯,进行了简单的归纳总结如下:

image.png



《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(11) https://developer.aliyun.com/article/1232277?groupCode=java

相关文章
|
5天前
|
JSON Java 数据安全/隐私保护
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
|
7天前
|
Java
PTA帅到没朋友(Java语言)+测试点
PTA帅到没朋友(Java语言)+测试点
12 1
|
6天前
|
存储 安全 Java
Java一分钟之-Java序列化与反序列化
【5月更文挑战第14天】Java序列化用于将对象转换为字节流,便于存储和网络传输。实现`Serializable`接口使类可被序列化,但可能引发隐私泄露、版本兼容性和性能问题。要避免这些问题,可使用`transient`关键字、控制`serialVersionUID`及考虑使用安全的序列化库。示例代码展示了如何序列化和反序列化对象,强调了循环引用和未实现`Serializable`的错误。理解并妥善处理这些要点对优化代码至关重要。
15 1
|
6天前
|
Java 测试技术 数据库
【JAVA基础篇教学】第十七篇:Java单元测试
【JAVA基础篇教学】第十七篇:Java单元测试
|
2天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十九)-java+ selenium自动化测试-隐藏元素定位与操作(详解教程)
【5月更文挑战第13天】本文主要讨论了在Selenium自动化测试中如何处理前端隐藏元素的问题。隐藏元素通常是通过`type="hidden"`或`style="display: none;"`属性实现的,它们在页面上不可见,但仍然存在于HTML代码中。Selenium可以定位到这些隐藏元素,但无法直接进行点击、输入等操作,会报错“ElementNotInteractableException”。
22 3
|
3天前
|
JavaScript 前端开发 测试技术
《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)
【5月更文挑战第12天】本文介绍了WebDriver中用于判断元素状态的三个方法:`isEnabled()`、`isSelected()`和`isDisplayed()`。`isSelected()`检查元素是否被选中,通常用于勾选框。`isDisplayed()`则用来判断元素是否在页面上可见。`isEnabled()`方法确定元素是否可操作,例如是否能点击或输入内容。
13 1
|
4天前
|
存储 JavaScript Java
《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)
【5月更文挑战第11天】WebDriver 的 `isDisplayed()` 方法用于检查页面元素是否可见,如果元素存在于DOM中且可视,返回`true`,否则返回`false`。在自动化测试中,这个方法常用于验证元素是否真正显示在页面上。示例代码展示了如何使用 `isDisplayed()` 判断百度登录页面的特定错误提示文字是否出现。
15 1
|
5天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
18 2
|
5天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
12 0
|
5天前
|
Java 测试技术
Java一分钟之-单元测试:JUnit与TestNG
【5月更文挑战第16天】本文介绍了Java常用的单元测试框架JUnit和TestNG,JUnit以其简洁注解受到青睐,而TestNG则提供更高级功能如参数化测试。常见问题包括测试未执行、断言失败等,解决办法包括检查项目配置、调整测试顺序。注意保持测试简单独立,确保高覆盖率。选择合适的框架可提升代码质量。
11 0

热门文章

最新文章