@Test
public void onConnectionCompletedTest() {
connectionProvider.initialize();
connectionProvider.addEventObserver(SocketEvent.Type.SOCKET_CONNECT, mockedObserver);
connectionProvider.onConnectionCompleted(mockedChannel);
verify(mockedObserver).socketEventObserved(socketEventCaptor.capture());
Assert.assertEquals(SocketEvent.Type.SOCKET_CONNECT, socketEventCaptor.getValue().getType());
}
@Test
public void onConnectionClosedTest() {
connectionProvider.initialize();
connectionProvider.addEventObserver(SocketEvent.Type.SOCKET_DISCONNECT, mockedObserver);
connectionProvider.onConnectionClosed(mockedChannel);
verify(mockedObserver).socketEventObserved(socketEventCaptor.capture());
Assert.assertEquals(SocketEvent.Type.SOCKET_DISCONNECT, socketEventCaptor.getValue().getType());
}
これらのテストを両方実行すると、2番目のテストが失敗するという問題があります。しかし、私がコメントアウトすると、Java Mockitoの1つのテストで別のテストが失敗する
verify(mockedObserver).socketEventObserved(socketEventCaptor.capture());
Assert.assertEquals(SocketEvent.Type.SOCKET_CONNECT, socketEventCaptor.getValue().getType());
となり、2回目のテストに合格します。これにはさまざまなクラス/メソッドが含まれていますので、これが説明を思い付くには十分な情報です。
私が取得エラー:正確
wanted but not invoked:
mockedObserver.socketEventObserved(
<Capturing argument>
);
-> at com.crestron.cnx.cip.io.ConnectionProviderTest.onConnectionClosedTest(ConnectionProviderTest.java:188)
Actually, there were zero interactions with this mock.
私の質問:どのように私は最初のテストを@ignoreとき、第二が通過することが起きているだろうか?
編集:私は重要な@Beforeクラスを持っています。
@Before
public void init() {
MockitoAnnotations.initMocks(this);
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(json);
configurationService.loadConfiguration(jsonElement, "id");
AppContext.getContext().applyConfiguration(configurationService);
connectionProvider = ConnectionProvider.newInstance();
}
最初と最後の行ではないものはすべて無視できます。新しいConnectionProviderオブジェクトを作成します。したがって、2つの別々のオブジェクトで動作しているため、1つのテストは別のテストに影響しないと思うでしょう。
あなたは初期化テストにモックをリセットしますか?また、テスト中のクラスの新しいインスタンスを作成することもできます。 – yonisha
このウェブサイトには投稿していないため、これが正しくフォーマットされるかどうかは不明です。 @Before公共ボイドのinit(){ MockitoAnnotations.initMocks(本) JsonParserパーサー=新しいJsonParser(); JsonElement jsonElement = parser.parse(json); configurationService.loadConfiguration(jsonElement、 "id"); AppContext.getContext()。applyConfiguration(configurationService); connectionProvider = ConnectionProvider.newInstance();私は私のメインの記事を編集した }。 –
あなたがMockitoAnnotation.initMocksを()を使用している、あなたのモックは「@Mock」アノテーションを付けていますか? – yonisha