我一直在学习更多关于Java中的Mockito框架,并且我迷失了如何完成这个单元测试。Mockito - Spring单元测试
基本上,控制台的错误指出,当Bar.sayHi()方法试图从Foo测试运行时,存在NullPointerException。我怀疑它与自动布线领域有关(但我可能错了)?
下面是问题的一个简单的例子,我遇到:
@RunWith(MockitoJUnitRunner.class)
public class FooTest {
@Mock
//@Spy // Cannot spy on an interface
IBar bar;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
// Given
FooImpl foo = new FooImpl();
foo.saySaySay();
// When
// Then
}
}
这里是正在测试的FooImpl类(有Foo的接口):
public class FooImpl implements IFoo {
@Autowired
private IBar bar;
public void saySaySay() {
bar.sayHi();
}
}
,酒吧(还有一个Bar的界面):
public class BarImpl implements IBar {
@Override
public void sayHi() {
System.out.println("hello");
}
}
有没有人有建议这个?谢谢。
https://dzone.com/articles/use-mockito-mock-autowired根据这一点,你可能需要'@ InjectMocks'上'FooImpl'例如允许自动的Mockito创建它(并注入依赖关系)而不是手动创建。你尝试过吗? –
我现在就试试这个,但是我使用的是Mockito Cookbook(Marcin Grejszczak),书中提到你可以使用setUp方法或InjectMocks进行初始化 - 所以我认为它们是一样的。 – rj2700