我一直在學習更多關於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