JUnit:忽略方法调用

时间:2013-10-15 14:14:19

标签: java unit-testing junit

我知道使用JUnit可以忽略使用@Ignore注释的测试但是如果从另一个方法调用该方法,是否可以忽略来自所有JUnit测试的方法调用?

在下面的示例中,我希望能够测试createPerson(...)方法,但我希望我的测试忽略createAddress(...)方法

快速示例:Person.java

public void createPerson(...){
    createAddress(...);
    createBankAccount(...);
    ...
}

@IgnoreByTests
public void createAddress(...){
... creates address ...
}

public void createBankAccount(...)[
... creates bank account ...
}

2 个答案:

答案 0 :(得分:6)

在您的测试课程中:

Person p = Mockito.spy(new Person());

Spying in Mockito

这是如何运作的:

  

您可以创建真实对象的间谍。当你使用间谍然后   调用实际方法(除非方法被存根)。真正的间谍   应谨慎使用,偶尔使用,例如在交易时   遗留代码。

     

对真实物体进行间谍活动可能与“部分嘲弄”有关   概念。在1.8发布之前,Mockito间谍并不是真正的偏见   嘲笑。原因是我们认为部分模拟是代码气味。在某些   我们找到了部分嘲笑的合法用例(第三方   接口,遗留代码的临时重构,完整的文章是   here

   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");

答案 1 :(得分:0)

这是嘲讽进入画面的时候。例如,Mockito:

class Tests {
 private Mock<MyClass> mockedClass;
 @Setup
 void Setup(){
  mockedClass = new Mock<MyClass>();
 }

 @Test
 void MyMockedTest(){
  Mockito.when(mockedClass.createAddress()).thenReturn("Some address 15, USA");
 }
}