我知道你只能验证void方法。但我实际上问自己为什么。
我最近偶然发现了一个单元测试,我真的需要验证是否已经进行了某次调用。确切地说,它是“newFolder.mkdirs()”。 在我看来,这种方法的行为几乎是“无效的”。但作为一个“特性”,开发者为这个函数提供了一个布尔返回类型,以查看该动作是否成功。
很好,但是在我的测试中,我并不关心这一点,我扔了我的嘲笑。我只是想确保完成这个调用,就像我想确保完成重要的无效调用一样。
那么现在有可能吗?我对此非常感兴趣,甚至无法想象这个小问题的解决方法:/有人得到了一个好的,简短的想法?
我完全错了:你可以验证一切。我放错了括号。
我有:
verify(newFolder.mkdirs());
我需要:
verify(newFolder).mkdirs();
傻傻的我;)
答案 0 :(得分:2)
我可能误解了,但是它说你只能验证无效方法?
例如......
import org.junit.Test;
import static org.mockito.Mockito.*;
public class VoidTest {
private interface TestClass {
boolean doStuff(String arg);
}
@Test
public void doIt() {
TestClass tc = mock(TestClass.class);
tc.doStuff("[SOMETHING]");
verify(tc).doStuff("[SOMETHING]"); // OK
verify(tc).doStuff("[SOMETHING ELSE ]"); // BOOM!
}
}