何时验证方法差异



我只需要知道

1)当我在Mockito中调用when()时,它实际上是在执行MockedObject方法行为?

2)如果我在when().thenReturn()中返回错误的值时,该怎么办。测试案例将是" false",或者它将返回50而不是30?

 when(mockedObject.add(10,20)).thenReturn(50);

3)即使模拟的对象方法无效,我为什么还需要强制使用thenReturn()?(当我不使用thenReturn()时,这是错误的。

使用何时() method。

将功能添加到模拟对象
@Test
public void testAdd(){
 when(mockedObject.add(20.0,30.0)).thenReturn(50.00);
}

4)如果我打电话

  verify(mockedObject,times(1)).add(20.0, 30.0);

它检查方法是否在模拟对象上调用或没有相同的参数调用,并仅1次检查对该方法的调用,对吗?因此,我可以使用()使用>在不使用 veriatify()的情况下,将函数添加到模拟对象方法,或者实际上需要调用验证()致电()方法

1)否,除非您使用@Spy而不是@Mock。那就是为什么您甚至可以模拟接口。

2)它将根据返回值的类型返回默认值(例如,如果返回类型为整数,则返回0)。

3)如果您使用了@Mock,则不需要使用when.thenReturn进行该模拟的空隙方法。实现只是不称为。

4)在调用正在测试的方法之前,在测试的一部分中使用when。在断言部分的调用后使用verify。在一个测试案例中,它们两者都不是强制性的。您只能在适当的位置使用when,仅使用verify

1)当您使用模拟时,您将创建一个类代替实际类的模拟。由于如此创建的对象不了解当调用类的某些方法时该怎么做,因此您需要在/然后使用以模拟行为。答案是否定的,因为您指定了在测试案例中需要执行的行为。当您使用新构造函数或使用@Spy在可能的情况下复制实际行为时,将执行实际行为。

2)当您在测试案例中指定以下行时,您指示跑步者在添加()添加()的调用时返回50。

when(mockedObject.add(10,20)).thenReturn(50);

是的,如果您编写了如下所述的断言,您的测试将通过,因为您提到的是需要返回50而不是默认值的方法:

assertEquals(50, mockedObject.add(10,20));

3)当将void方法随后时,您无法写入。Mockito会抛出错误,说'当Mockito中(t)不适用于参数(void)'时的方法。对于无效方法,您可以执行的最大方法是验证是否调用了方法。我相信您正在测试一种确实返回某物并且并非无效的方法。请不要将返回测试用例的返回类型与其中的返回类型混淆。

,您也可以使用void方法使用donothing()或doanswer(),以防您需要覆盖这些特定的东西。

4)它检查了该方法是否在模拟对象上调用或没有相同的参数调用,并仅检查该方法的调用仅为1次,对吗? - 右

正如我在3)中所述的

验证大多用于测试空隙方法,并且是在大多数时间大多数时期就足够的其他测试中的增值。当方法什么都没有返回时,您不能写一个断言。那就是验证的图片。

最新更新