《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(6)

简介: 《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(6)

《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(5) https://developer.aliyun.com/article/1232415?groupCode=java



四、 模拟依赖对象

 

在编写单元测试用例时,需要模拟各种依赖对象——类成员、方法参数和方法返回值。

 

1. 直接构建对象

 

如果需要构建一个对象,最简单直接的方法就是——定义对象并赋值。


image.png

2.反序列化对象


如果对象字段或层级非常庞大,采用直接构建对象方法,可能会编写大量构建程序代码。这种情况,可以考虑反序列化对象,将会大大减少程序代码。由于JSON字符串可读性高,这里就以JSON为例,介绍反序列化对象。

反序列化模型对象:

 

image.png

反序列化集合对象

image.png

反序列化映射对象

image.png


建议:JSON文件内容不要格式化,以免占用更多的代码行数。


3.利用Mockito.mock方法


Mockito提供一个mock功能,用于拦截那些尚未实现或不期望被真实调用的方法,默认所有方法都已被模拟——方法为空并返回默认值(null或0),除非主动执行doCallRealMethod或thenCallRealMethod操作,才能够调用真实的方法。

利用Mockito.mock方法模拟依赖对象,主要用于以下几种情形:

•只使用类实例,不使用类属性;

•类属性太多,但使用其中少量属性(可以mock属性返回值);

•类是接口或虚基类,并不关心其具体实现类。


4.利用@Mock注解


@Mock注解跟Mockito.mock方法一样,可以用来模拟依赖对象,适用于普通类、接口和虚基类。@Mock注解需要配合@RunWith注解使用。


image.png

5. 利用Mockito.spy方法

 

Mockito.spy方法跟Mockito.mock方法功能相似,只是Mockito.spy方法默认所有方法都是真实方法,除非主动去模拟对应方法。


image.png

6. 利用@Spy注解

 

@Spy注解跟Mockito.spy方法一样,可以用来模拟依赖对象,适用于普通类、接口和虚基类。@Spy注解需要配合@RunWith注解使用。


image.png

注意:@Spy注解对象需要初始化。如果是虚基类或接口,可以用Mockito.mock方法实例化。

 



《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(7) https://developer.aliyun.com/article/1232413?groupCode=java

相关文章
|
12天前
|
安全 数据可视化 前端开发
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
34 0
|
5天前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
34 5
|
1天前
|
安全 测试技术 网络安全
API渗透测试的基本流程及关键点
【5月更文挑战第26天】API渗透测试类似Web应用渗透测试,涉及资产分析和模拟攻击,以发现安全缺陷。
|
2天前
|
XML 敏捷开发 存储
深入理解自动化测试中的数据驱动方法
【5月更文挑战第25天】 在现代软件开发过程中,自动化测试是确保产品质量和加速交付速度的关键手段。本文将探讨数据驱动测试(DDT)方法的核心概念、实施策略以及它如何提升自动化测试的灵活性和效率。不同于常规摘要,本文将通过实际案例分析,揭示数据驱动方法在不同测试场景中的应用,并讨论其对测试覆盖率和可靠性的影响。
|
5天前
|
小程序 安全 测试技术
【软件测试】用例篇 -- 详解(下)
【软件测试】用例篇 -- 详解(下)
|
5天前
|
算法 安全 测试技术
【软件测试】用例篇 -- 详解(上)
【软件测试】用例篇 -- 详解(上)
|
9天前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第17天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试方法,它允许测试人员通过外部数据源来控制测试用例的执行。这种方法的核心在于将测试逻辑与测试数据分离,使得测试案例可以简单地通过改变输入数据集来扩展和复用。本文旨在探讨数据驱动测试的原理、实施策略及其在实际项目中的应用效果,以期为读者提供一种提高测试效率和质量的有效手段。
|
11天前
|
Java 测试技术
Java一分钟之-单元测试:JUnit与TestNG
【5月更文挑战第16天】本文介绍了Java常用的单元测试框架JUnit和TestNG,JUnit以其简洁注解受到青睐,而TestNG则提供更高级功能如参数化测试。常见问题包括测试未执行、断言失败等,解决办法包括检查项目配置、调整测试顺序。注意保持测试简单独立,确保高覆盖率。选择合适的框架可提升代码质量。
19 0
|
12天前
|
人工智能 测试技术 数据处理
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
10 0
|
12天前
|
测试技术 iOS开发
pytest Mark标记测试用例
使用`pytest.mark`进行测试用例分组和筛选,如`@pytest.mark.webtest`。通过`pytest -m`参数执行特定标记的用例,例如`pytest -s test_command_param.py -m webtest`。同时,pytest支持内置的skip、skipif和xfail功能来管理特殊用例:skip始终跳过,skipif条件满足时跳过,xfail则标记预期失败的测试。
8 0