Я пытаюсь создать тесты для моего проекта spring-cloud-stream. Я создал свой собственный интерфейс BizSyncProcessor вместо использования процессора по умолчанию, который, кажется, есть во всей документации. Я делал этот проект раньше с тестами, но не могу вспомнить, использовал ли я в то же время mockito, поэтому мне интересно, в этом ли проблема, потому что я делаю @RunWith (MockitoJUnitRunner.class) вместо @RunWith (SpringRunner).
У меня также были похожие проблемы при создании реального приложения , прежде чем я включил реализацию кролика в качестве зависимости в maven.
IntelliJ отмечает ошибку в @Autowired BizSyncProcessor, говоря, что «Бины типа« BizSyncProcessor »не найдены». Однако я могу запустить тест, поэтому он компилируется, но тогда bizSyncProcessor будет нулевым при запуске теста.
Я включаю mockito, потому что обработчик, который прослушивает сообщение, делает вызов другой службе (SFISClient), поэтому я игнорирую этот вызов.
Вот мой тест:
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EnableAutoConfiguration
@Configuration
@EnableBinding(BizSyncProcessor.class)
public class UpdatedBusinessHandlerTest {
@Autowired
private BizSyncProcessor bizSyncProcessor;
@Autowired
private MessageCollector messageCollector;
@Mock
SFISClient sfisClient;
@InjectMocks
UpdatedBusinessHandler updatedBusinessHandler;
@Test
public void testWiring() throws Exception {
UpdatedBusinessAlert updatedBusinessAlert = new UpdatedBusinessAlert();
updatedBusinessAlert.setBusinessId(UUID.randomUUID());
Message<UpdatedBusinessAlert> updatedBusinessAlertMessage = MessageBuilder.withPayload(updatedBusinessAlert).build();
bizSyncProcessor.writeUpdatedBusinessIds().send(updatedBusinessAlertMessage);
Message<BusinessFlooringSummary> businessFlooringSummaryMessage = (Message<BusinessFlooringSummary>) messageCollector.forChannel(bizSyncProcessor.writeFlooringSummaries()).poll();
BusinessFlooringSummary businessFlooringSummary = businessFlooringSummaryMessage.getPayload();
assertNotNull(businessFlooringSummary);
}
}