我知道使用JUnit可以忽略使用@Ignore注释的测试但是如果从另一个方法调用该方法,是否可以忽略来自所有JUnit测试的方法调用?
在下面的示例中,我希望能够测试createPerson(...)
方法,但我希望我的测试忽略createAddress(...)
方法
快速示例:Person.java
public void createPerson(...){
createAddress(...);
createBankAccount(...);
...
}
@IgnoreByTests
public void createAddress(...){
... creates address ...
}
public void createBankAccount(...)[
... creates bank account ...
}
答案 0 :(得分:6)
在您的测试课程中:
Person p = Mockito.spy(new Person());
这是如何运作的:
您可以创建真实对象的间谍。当你使用间谍然后 调用实际方法(除非方法被存根)。真正的间谍 应谨慎使用,偶尔使用,例如在交易时 遗留代码。
对真实物体进行间谍活动可能与“部分嘲弄”有关 概念。在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");
}
}