假设我正在测试以下方法。
/**
* Does something. This method throws a {@code NullPointerException}
* either given string or specified charset is {@code null}.
* @param s the string
* @param c the charset
*/
void doSomething(String s, Charset c) {
}
我如何在测试时为非空目的进行模拟?
assertThrows(NullPointerException.class,
new MyObject().doSomething(null, UTF_8));
assertThrows(NullPointerException.class,
new MyObject().doSomething("", null));
是否有模拟一般非空值的库/方法?
我尝试了 Mockito.mock
,它似乎会为某些无效类型抛出异常,因为它实际上可以模拟。
更新
根据 user2004685 的回答,现在,我很好奇我是否可以像这样使用 anyString
或 any(Class)
。
assertThrows(NullPointerException.class,
new MyObject().doSomething(null, any(Charset.class)));
assertThrows(NullPointerException.class,
new MyObject().doSomething(anyString(), null));
最佳答案
这是一个void
方法。如果您使用 Mockito 模拟它以抛出异常,那么您需要执行如下操作:
Mockito.doThrow(new NullPointerException("Description"))
.when(mymock)
.doSomething(Mockito.anyString(), Mockito.any(Charset.class));
即使将 null
传递给该方法,它也应该可以工作。
关于java - 我怎样才能模拟一个非空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104203/