Mocking member variables of a class using Mockito(使用 Mockito 模拟类的成员变量)
问题描述
我是开发新手,尤其是单元测试新手.我想我的要求很简单,但我很想知道其他人对此的想法.
I am a newbie to development and to unit tests in particular . I guess my requirement is pretty simple, but I am keen to know others thoughts on this.
假设我有两个这样的课程 -
Suppose I have two classes like so -
public class First {
Second second ;
public First(){
second = new Second();
}
public String doSecond(){
return second.doSecond();
}
}
class Second {
public String doSecond(){
return "Do Something";
}
}
假设我正在编写单元测试来测试 First.doSecond() 方法.但是,假设我想像这样模拟 Second.doSecond() 类.我正在使用 Mockito 来做到这一点.
Let's say I am writing unit test to test First.doSecond() method. However, suppose, i want to Mock Second.doSecond() class like so. I am using Mockito to do this.
public void testFirst(){
Second sec = mock(Second.class);
when(sec.doSecond()).thenReturn("Stubbed Second");
First first = new First();
assertEquals("Stubbed Second", first.doSecond());
}
我看到模拟没有生效并且断言失败.有没有办法模拟我要测试的类的成员变量.?
I am seeing that the mocking does not take effect and the assertion fails. Is there no way to mock the member variables of a class that I want to test . ?
推荐答案
你需要提供一种访问成员变量的方法,这样你就可以传入一个 mock(最常见的方法是 setter 方法或构造函数一个参数).
You need to provide a way of accessing the member variables so you can pass in a mock (the most common ways would be a setter method or a constructor which takes a parameter).
如果您的代码未提供执行此操作的方法,则它被错误地考虑为 TDD(测试驱动开发).
If your code doesn't provide a way of doing this, it's incorrectly factored for TDD (Test Driven Development).
这篇关于使用 Mockito 模拟类的成员变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 Mockito 模拟类的成员变量
基础教程推荐
- 修改 void 函数的输入参数,然后读取 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- Struts2 URL 无法访问 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
