the*_*zzy 2 java junit unit-testing
我知道使用JUnit可以忽略使用@Ignore注释的测试但是如果从另一个方法调用该方法,是否可以忽略来自所有JUnit测试的方法调用?
在下面的示例中,我希望能够测试该createPerson(...)
方法,但我希望我的测试忽略该createAddress(...)
方法
快速示例:Person.java
public void createPerson(...){
createAddress(...);
createBankAccount(...);
...
}
@IgnoreByTests
public void createAddress(...){
... creates address ...
}
public void createBankAccount(...)[
... creates bank account ...
}
Run Code Online (Sandbox Code Playgroud)
在您的测试类中:
Person p = Mockito.spy(new Person());
Run Code Online (Sandbox Code Playgroud)
这是如何运作的:
您可以创建真实对象的间谍.当你使用spy时,会调用真正的方法(除非方法被存根).应该谨慎使用真正的间谍,例如在处理遗留代码时.
对真实物体进行间谍活动可以与"部分嘲弄"概念相关联.在1.8发布之前,Mockito间谍不是真正的部分嘲笑.原因是我们认为部分模拟是代码气味.在某些时候,我们找到了部分模拟的合法用例(第三方接口,遗留代码的临时重构,完整的文章在 这里)
List list = new LinkedList();
List spy = spy(list);
//optionally, you can stub out some methods:
when(spy.size()).thenReturn(100);
//using the spy calls real methods
spy.add("one");
spy.add("two");
//prints "one" - the first element of a list
System.out.println(spy.get(0));
//size() method was stubbed - 100 is printed
System.out.println(spy.size());
//optionally, you can verify
verify(spy).add("one");
verify(spy).add("two");
Run Code Online (Sandbox Code Playgroud)