【发布时间】:2021-02-03 14:03:36
【问题描述】:
public class Foo {
private BarFactory barFactory;
public Foo(BarFactory factory) {
this.barFactory = factory;
}
public void foo() {
service();
Bar bar = this.barFactory.createBar();
bar.someMethod();
}
public void service(){
//Performs some service
}
}
Foo foo = new Foo(myFactory);
@Test
public void testDoFoo() {
Bar bar = mock(Bar.class);
foo.foo();//service() method throws an exception
verify(bar, times(1)).someMethod();
}
我必须验证 bar.SomeMethod() 已运行一次,但 service() 方法在 UT 中执行 foo() 方法时抛出错误。有没有办法只测试 bar.SomeMethod() 忽略 UT 中的服务方法。 我不需要测试 Service() 方法。
【问题讨论】:
-
欢迎来到 SO。你编写代码的方式不允许你做你想做的事。您可以做的是编写一个单元测试以确保服务正常运行,然后运行您的集成测试(您编写的内容)或从 foo() 中删除 service()。基本上要么修复 service() 要么删除它的调用。
标签: java spring junit mockito powermockito