Mockito单元测试框架学习

简介:
一、问题:如何将mock的类自动注入到待测类,特别是在没有setter方法的情况下。
  解答:
  前提:待测的service类及其依赖的其他类都是处在被spring管理中的。
  做法:在 测试类中,只要将待测的类标注为@InjectMocks,将其依赖的其他类标注为 @Mock,
  就可以使用MockitoAnnotations.initMocks(this);这句话自动将依赖的类注入待测类,如果依赖类在spring的管理下有自己的name,那么甚至在待测类中都不需要写setter方法。
  例:
  1、待测类
@Component("abcService")
public class AbcService {
@Resource(name="aaaDao")
private AaaDao aaaDao;
@Resource(name="bbbDao")
private BbbDao bbbDao;
......//注:此处省略的代码中并不包含aaaDao和bbbDao的setter方法。
}
  2、测试类
public class AbcServiceTest{
@InjectMocks
AbcService abcService;
@Mock
AaaDao aaaDao;
@Mock
BbbDao bbbDao;
@Before
public void setup(){
MockitoAnnotations.initMocks(this);//这句话执行以后,aaaDao和bbbDao自动注入到abcService中。
//在这之后,你就可以放心大胆地使用when().then()等进行更详细的设置。
}
}
   二、问题:如何对连续的调用进行不同的返回
  对连续的调用进行不同的返回 (iterator-style stubbing)
  还记得在实例2中说道当我们连续两次为同一个方法使用stub的时候,他只会使用最新的一次。但是在某一个方法中我们确实有很多的调用怎么办呢?mockito当然想到这一点了:
when(mock.someMethod("some arg"))
.thenThrow(new RuntimeException())
.thenReturn("foo");
//First call: throws runtime exception:
mock.someMethod("some arg");
//Second call: prints "foo"
System.out.println(mock.someMethod("some arg"));
//Any consecutive call: prints "foo" as well (last stubbing wins).
System.out.println(mock.someMethod("some arg"));
  当然我们也可以将第一句写的更简单一些:
  when(mock.someMethod("some arg"))
  .thenReturn("one", "two", "three");

最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
6月前
|
Java 测试技术 API
Junit5单元测试框架详解
前面我们学习了Selenium自动化测试框架,但是有的时候测试用例会很多,我们需要一个工具来管理这些测试用例,而Junit就是一个很好的管理工具,简单点来说,Junit就是一个针对Java的单元测试框架;
101 0
|
7月前
|
自然语言处理 测试技术 C#
NSubstitute:一个简单易用、灵活多变的.NET单元测试模拟框架
NSubstitute是一个开源的.NET单元测试模拟类库,该框架设计的主要目标是提供一个简单明了、易用性强、贴近自然语言的模拟测试框架。它使得开发者能够专注于测试工作,而不是纠结于测试替代实例的创建和配置。
78 5
|
3月前
|
测试技术 Python
Python自动化测试与单元测试框架
现在越来越多的软件开发人员开始采用Python进行自动化测试和单元测试。Python具有简单易学、灵活性高等特点,加上其丰富的测试框架,使得Python自动化测试和单元测试成为了开发人员不可或缺的一部分。本文将介绍Python自动化测试和单元测试框架的基础知识和使用方法。
|
3月前
|
测试技术 开发者 Python
Python自动化测试与单元测试框架:提升代码质量与效率
在软件开发过程中,测试是不可或缺的环节。Python作为一门广泛应用的编程语言,拥有丰富的自动化测试和单元测试框架,例如unittest和pytest。本文将介绍Python自动化测试的重要性,并深入探讨这两个主流的单元测试框架的特点、使用方法以及优势。通过学习和应用这些框架,开发者可以提高代码质量、提升开发效率,并确保软件在不断迭代中保持稳定。
|
3月前
|
测试技术 Python
Python自动化测试与单元测试框架
自动化测试在软件开发中扮演着重要的角色,可以减少人工测试的时间和成本,提高软件质量。而Python作为一种流行的编程语言,其丰富的库和框架可以让测试变得更加容易和高效。本文将介绍Python自动化测试和单元测试框架,包括unittest和pytest的使用方法、优点和缺点,以及如何根据项目需求选择合适的框架。
|
3月前
|
Java 测试技术 API
【Java技术深入解析】「核心技术提升」最流行的Java模拟框架Mockito入门指南(Java单元测试)
还在使用 Mockito 1.x?看看 Mockito 2 有哪些新功能!Mockito 3 没有引入任何破坏性的 API 变动,但现在需要 Java 8 而不是 Mockito 2 的 Java 6。 Mockito 4 删除了过时的 API。Mockito 5 将默认 mockmaker 改为 mockito-inline,现在需要 Java 11。一次只支持一个主要版本,而且不会向旧版本回传更改内容。
63 0
【Java技术深入解析】「核心技术提升」最流行的Java模拟框架Mockito入门指南(Java单元测试)
|
4月前
|
测试技术
单元测试利器 Mockito
单元测试利器 Mockito
66 0
|
5月前
|
JavaScript 前端开发 测试技术
JavaScript测试和调试工具:学习使用测试框架(如Jasmine、Mocha)对JavaScript代码进行单元测试
JavaScript测试和调试工具:学习使用测试框架(如Jasmine、Mocha)对JavaScript代码进行单元测试
|
6月前
|
Java 测试技术 Spring
Spring Boot 学习研究笔记(五) -SpringBoot集成单元测试
Spring Boot 学习研究笔记(五) -SpringBoot集成单元测试
|
8月前
|
Java 测试技术 API
Junit5单元测试框架原理和实践
Junit5单元测试框架原理和实践
131 1