Java 检查是否调用了void方法
我的第一个jUnit测试被Mockito卡住了 我必须测试一个以ArrayList为参数的方法。在这个方法中,将有另一个名为的类,它运行运行时执行。所以我需要用运行时执行来模拟类,因为它们希望在Jenkins上失败(因为Jenkins在Linux上运行) 前两类:Java 检查是否调用了void方法,java,junit,mockito,Java,Junit,Mockito,我的第一个jUnit测试被Mockito卡住了 我必须测试一个以ArrayList为参数的方法。在这个方法中,将有另一个名为的类,它运行运行时执行。所以我需要用运行时执行来模拟类,因为它们希望在Jenkins上失败(因为Jenkins在Linux上运行) 前两类: HandleInformation测试类将被测试的类 XFDHandler测试与运行时执行的接口,该类称为XFDHandlerProd 因此,首先我模拟运行时类: test = Mockito.mock(XFDHandlerProd.
HandleInformation测试类代码>将被测试的类
XFDHandler测试代码>与运行时执行的接口,该类称为XFDHandlerProd
因此,首先我模拟运行时类:
test = Mockito.mock(XFDHandlerProd.class);
这四种方法都是void方法,因此如果我正确理解了以下内容,那么该方法本身不应该做任何事情:
注意,mock上的void方法在默认情况下不起任何作用
那么我将做我的第一个测试:
@Test
public void testNullList() throws IOException, InterruptedException {
ArrayList<Info> nullArray = new ArrayList<Info>();
testClass.handleInformation(nullArray);
Mockito.verify(test, Mockito.times(1)).turnOnBlue();
}
@测试
public void testNullList()引发IOException、InterruptedException{
ArrayList nullArray=新的ArrayList();
testClass.handleInformation(nullArray);
Mockito.verify(test,Mockito.times(1)).turnOnBlue();
}
当我向testClass发送一个空列表时,它应该被称为运行时类turnOnBlue()的void方法代码>。据我所知,使用verify
方法,我可以检查是否真的调用了该方法
但是当我现在运行测试时,我将得到以下错误:
需要但未调用:xFDHandlerProd.turnOnBlue()
->在com.example.example.business.HandleInformationTest.testNullList(HandleInformationTest.java:44)
实际上,与这个模拟没有任何交互
第44行是带有Mockito.verfiy()的行
现在我不知道我做错了什么
思想
通信是否为零,因为我在HandleInformation
类中使用了XFDHandler
的另一个实例,所以Mockito看不到任何活动?
如果是这样,我如何能够在测试中使用Mockito类而不更改HandleInformation
类中的任何方法?您似乎需要将colaborator作为参数传递。这意味着你需要这样的东西:
XFDHandler test = Mockito.mock(XFDHandlerProd.class);
HandleInformation testClass = new HandleInformation(test);
那你的测试就行了
顺便说一句,我会删除Mockito.times(1)因为这是默认行为您应该使用setter或constructor将您的模拟对象注入到您的测试对象中,或者只是将其作为方法参数传递,以便mockito能够理解您正在测试的对象何时调用模拟对象方法您是否在“testClass”中注入/设置“test”实例?您的想法可能是正确的,因为您需要将为XFDHandler创建的mock注入HandleInformation类。你的HandleInformation类是如何实例化的?你能添加代码来说明你是如何设置testClass
对象的吗?嗯,这不是空数组,这是一个空数组,这是不同的。但这并不是你的问题(至少,我对此表示怀疑)。@发条缪斯:说得好。不管它是空的还是空的,但是名称确实拼错了。谢谢你。谢谢。是的,我刚在文件上看到,我可以把它移除。干杯