私はリスナーテストを行っています。ここでは、並列スレッドにメッセージを投稿し、すべてが正常に処理された場合はLatchCountDownAndCallRealMethodAnswerで確認します。テストを単独で実行すると完全に動作しますが、他のすべてのテストを一緒に実行すると、カウンタがゼロにならないために失敗しますが、リスナーはメッセージを正常に受信して処理します。誰にもアイデアはありますか?RabbitMQからLatchCountDownAndCallRealMethodAnswerでテストを実行しているときにアサーションエラーが発生しました
私のテストクラス
@RunWith(SpringRunner.class)
@SpringBootTest
@RabbitListenerTest
@ActiveProfiles("test")
public class EventListenerTest {
EventListener eventListener;
@Autowired
protected RabbitListenerTestHarness harness;
@Autowired
private EventStoreRepository repository;
@SpyBean
private DomainEventPublisher publisher;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
DomainRegister.setDomainEventPublisher(publisher);
eventListener = this.harness.getSpy("eventListenerId");
}
@Test
public void storeEventsListenerTest() throws Exception {
LatchCountDownAndCallRealMethodAnswer answer = new LatchCountDownAndCallRealMethodAnswer(1);
doAnswer(answer).when(eventListener).storeEvents(any(BalanceReserved.class));
publisher.publish(new BalanceReserved("12233", 150.0, BigDecimal.ZERO), "");
assertTrue(answer.getLatch().await(10, TimeUnit.SECONDS));
verify(eventListener, times(1)).storeEvents(any(BalanceReserved.class));
}
@After
public void tearDown() {
DomainRegister.setDomainEventPublisher(null);
reset(eventListener);
repository.deleteAll();
}
}
エラー
java.lang.AssertionError
他のテストでイベントエディタを忘れたとしても、これはウサギのこのテストに影響しますか? –
イベントパブリッシャー* –
"忘れる"とは何を意味するのかよくわかりません。しかし、このキューと同じキューから消費する '@RabbitListener'を使用している他のテストがある場合、それらのテストのコンテナ(実行している場合)がこのテストのメッセージを受け取る可能性があります。リスナコンテナを起動するテストケースには必ず@DirtiesContextを追加する必要があります。したがって、テストが終了した後にコンテナが停止します。 –