假设我有一个带有两个我不在乎的方法的类,这称为…
public class Foo {
public String getProperty(String key) {
return getProperty(key, null);
}
public String getProperty(String key, String defaultValue) {
//...
}
}
下面的两个(仍然来自我的应用程序中的另一个类)都应该通过我的测试:
public void thisShouldPass(String key) {
// ...
String theValue = foo.getProperty(key, "blah");
// ...
}
public void thisShouldAlsoPass(String key) {
// ...
String theValue = foo.getProperty(key);
if (theValue == null) {
theValue = "blah";
}
// ...
}
我不在乎哪个被调用,我只想调用两个变体之一。
在Mockito中,我通常可以执行以下操作:
Mockito.verify(foo, atLeastOnce()).getProperty(anyString());
要么:
Mockito.verify(foo, atLeastOnce()).getProperty(anyString(), anyString());
是否有一种本地方式说“验证 一个或另一个 至少发生一次”?
还是我必须做一些粗略的事情:
try {
Mockito.verify(foo, atLeastOnce()).getProperty(anyString());
} catch (AssertionError e) {
Mockito.verify(foo, atLeastOnce()).getProperty(anyString(), anyString());
}
您可以atLeast(0)
结合使用ArgumentCaptor
:
ArgumentCaptor<String> propertyKeyCaptor = ArgumentCaptor.forClass(String.class);
Mockito.verify(foo, atLeast(0)).getProperty(propertyKeyCaptor.capture(), anyString());
ArgumentCaptor<String> propertyKeyCaptor2 = ArgumentCaptor.forClass(String.class);
Mockito.verify(foo, atLeast(0)).getProperty(propertyKeyCaptor2.capture());
List<String> propertyKeyValues = propertyKeyCaptor.getAllValues();
List<String> propertyKeyValues2 = propertyKeyCaptor2.getAllValues();
assertTrue(!propertyKeyValues.isEmpty() || !propertyKeyValues2.isEmpty()); //JUnit assert -- modify for whatever testing framework you're using
但这将返回以下错误: org.mockito.exceptions.misusing.NotaMockException: 传递给verify()的参数类型为$proxy4,不是mock!
问题内容: 我正在使用以下内容。 这是我的utils课 这是被测课程的要点: 这是测试: 以上测试失败。给出的验证模式为空,但根据代码,如果订购成功,则必须发送电子邮件。 问题答案: 如果您要嘲笑行为(类似),则实际上无需调用。也就是说,这是我重写测试方法的动力: 我分为四个部分,以更好地突出显示正在发生的事情: 1.变量 我选择在此处声明任何实例变量/方法参数/模拟协作者。如果它在多个测试中使用
问题内容: 我正在使用Mockito用Java编写单元测试,并且我想验证某种方法是在对象 上 调用的 最后一个 方法。 我在被测试的代码中正在做这样的事情: 在我的模拟中,我不在乎编辑行中所有内容的顺序,但是非常重要的是,保存后 不要 尝试对其进行任何其他操作。有什么好方法吗? 请注意,我不是在寻找verifyNoMoreInteractions:它不会确认saveToDatabase是最后调用的
我正在Junit上工作 这就是我所做的。我已发出请求,并且我的请求已成功调用我的控制器。当我尝试使用要测试是否调用了静态方法,我得到一个错误,如下所示。 我得到的错误是: 我的问题是: > 我可以使用在我的方法。如果"是"如何? 我还想在上使用验证。我该怎么做呢? 任何帮助都是值得赞赏的。
我试图验证在使用powerMockito 1.6.4测试服务方法时从未调用过静态方法 我按照这个答案做了同样的事情。 以下是我的代码。 我现在面临的问题是,调用real并给出nullPointerException。 我的假设是与一起工作,以便指定要验证的静态方法。 我错过什么了吗?
我在类中有一个签名为的方法。 我有一个调用方法的代码块: 如果我想测试databaseService.save(user)没有被调用,那么我如何用Mockito(3.3.3版)来做呢?