我有Animal.class
:
class Animal {
int counter;
public void move() {
counter += getRandomNumber(1, 10);
}
public static int getRandomNumber(int min, int max) {
return new Random().nextInt(min, max);
}
}
我用Mockito 5.2.0
。
已尝试使用mockedStatic
接口验证getRandomNumber
方法:
@Test
void tryVerifyStaticMethod() {
try (MockedStatic<Animal> mockedStatic = mockStatic(Animal.class)) {
mockedStatic.verify(() -> Animal.getRandomNumber(1, 10), times(1));
}
}
但是我不知道如何在调用getRandomNumber
方法的测试中调用非静态move()
方法。
1条答案
按热度按时间6kkfgxo01#
首先,不要测试类的内部细节,测试它的行为。在你的情况下,我会像这样重写动物:
那么你的测试就变成了:
避免在你想要测试的类中调用
new
。如果愿意,您可以将getRandomeNumber
保持为static
,并将Random
示例作为参数传递给它,但我认为这样做没有什么好的理由。