JUnit:忽略方法调用

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)

Nar*_*hai 6

在您的测试类中:

Person p = Mockito.spy(new Person());
Run Code Online (Sandbox Code Playgroud)

间谍Mockito

这是如何运作的:

您可以创建真实对象的间谍.当你使用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)