我正在使用Mockito编写我的测试用例。我有一个简单的类,其中包含countPerson(boolean)
我要测试的功能:
public class School {
//School is a singleton class.
public void countPerson(boolean includeTeacher) {
if (includeTeacher) {
countIncludeTeacher();
return;
}
countOnlyStudents();
}
public void countIncludeTeacher() {...}
public void countOnlyStudents() {...}
}
在单元测试中,我要测试countPerson(boolean)
功能:
public class SchoolTest{
private School mSchool;
@Before
public void setUp(){
mSchool = School.getInstance();
}
@Test
public void testCountPerson() {
mSchool.countPerson(true);
//How to test/verify countIncludeTeacher() is invoked once?
}
}
countIncludeTeacher()
在我的测试案例中,如何使用Mockito进行检查/验证?
您将不得不使用间谍。这里的问题是您要验证是否在
真实
对象而非模拟对象上调用了方法。您不能在此处使用模拟,因为它将对类中的所有方法进行存根,因此countPerson
缺省情况下也对存根不执行任何操作。
@Test
public void testCountPerson() {
School school = School.getInstance();
School spySchool = Mockito.spy(school);
spySchool.countPerson(true);
verify(spySchool).countIncludeTeacher();
}
但是,请注意,使用间谍程序时应格外小心,因为除非经过特殊处理,否则实际方法都会被调用。引用Mockito Javadoc:
真正的间谍应该 小心谨慎 地使用,例如在处理遗留代码时。
我有一个四叉树,我想在几个不同的机器上使用它。调用构造函数(即构建树)需要很长时间。我不想每次我需要使用它的时候都建这棵树。 我正在寻找一种方法,将我的树持久保存在硬盘中,发送到每个节点,然后快速将其加载到内存中,以便执行查找。 序列化能帮助我吗?我知道我可以序列化树,把它保存到磁盘上,然后反序列化(这就是我对序列化的全部了解)。据我所知,反序列化步骤需要一个默认的构造函数来构建树。因为构建树的计
我正在尝试测试,只有在调用case的情况下,否则不会调用该方法。 但这会调用我的,并在内抛出空指针。因为我的行为不会调用,所以我如何在不调用的情况下测试它。
我的代码: }在这个特定的测试中没有失败,但是当我运行这个套件时,Mockito会告诉我不正确使用匹配器的情况。 我也可以做一些类似的事情:
我试图验证一个模拟的方法()被调用了2次。不管出于什么原因,Mockito从来没有失败过测试,不管期望调用的次数是多少。我是这样使用它的:
当尝试将Mockito与spring一起使用时,通过bean声明创建Mock对象... ...我在调用mockito时发现了一些奇怪的行为。当多次没有重置Mock对象时,例如: 在测试过程中(在同一个模拟上)多次调用此代码(“mockito.when”)时,测试就会失败并出现错误(BadSqlGrammerException即使该异常实际上是预期的--如果不抛出异常,我会得到一个失败,并且手动抛出
用户应该输入一个4位数的数字,我需要反向它我导入扫描并收到了来自用户的答案,但是如何反向呢?例如,如果用户键入9876,它将打印6789?我应该用%吗?