运行mvn verify时在“test”配置文件中为测试设置默认绑定器

dluptydi  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(247)

我有一个spring云项目,它有一个绑定到messagebus kafka和rabbitmq的模块。在本单元中,我对Kafka进行了测试:

  1. @ActiveProfiles("test")
  2. @DirtiesContext
  3. @ExtendWith(SpringExtension.class)
  4. @ContextConfiguration(classes = MessageReceiverTestConfiguration.class,
  5. initializers = ConfigFileApplicationContextInitializer.class)
  6. @EnableBinding(MessageReceivingChannel.class)
  7. public class MessageReceiverITest {
  8. @Autowired
  9. private MessageReceivingChannel messageReceivingChannel;
  10. @MockBean
  11. private MessageConsumerService messageConsumerService;
  12. @Autowired
  13. private MessageConverter messageConverter;
  14. @Autowired
  15. private MessageReceiverTestConfiguration receiverTestConfiguration;
  16. @Captor
  17. private ArgumentCaptor<ImportantMessage> captorMessage;
  18. @Captor
  19. private ArgumentCaptor<MessageHeaders> captorHeaders;
  20. @Test
  21. public void testLoanApplicationChannelInput() throws Throwable {
  22. final ImportantMessage sentMessage = new ImportantMessage("qwer124asdf");
  23. final Map<String, Object> headerMap = new HashMap<>(1);
  24. headerMap.put(MessageHeaders.CONTENT_TYPE, receiverTestConfiguration.getContentType());
  25. MessageHeaders sentHeaders = new MessageHeaders(headerMap);
  26. final Message<?> message = messageConverter.toMessage(sentMessage, sentHeaders);
  27. messageReceivingChannel.input().send(message);
  28. TimeUnit.SECONDS.sleep(1);
  29. verify(messageConsumerService).takeActionOn(captorMessage.capture(), captorHeaders.capture());
  30. final Object receivedMessage = captorMessage.getValue();
  31. Assertions.assertThat(receivedMessage).isNotNull();
  32. Assertions.assertThat(receivedMessage).isEqualTo(sentMessage);
  33. MessageHeaders receivedHeaders = captorHeaders.getValue();
  34. Assertions.assertThat(receivedHeaders).isNotNull();
  35. Assertions.assertThat(receivedHeaders.get(MessageHeaders.CONTENT_TYPE).toString())
  36. .isEqualTo(sentHeaders.get(MessageHeaders.CONTENT_TYPE));
  37. }
  38. }

在ide(idea)中运行很好。
问题是,当我尝试安装maven artifact时,它没有通过验证阶段,因为:

  1. org.springframework.context.ApplicationContextException: Failed to start bean 'inputBindingLifecycle'; nested exception is java.lang.IllegalStateException: A default binder has been requested, but there is more than one binder available for 'org.springframework.cloud.stream.messaging.DirectWithAttributesChannel' : kafka,rabbit, and no default binder has been set.

这就是我设置默认活页夹的方法 test/resources/application-test.yml :

  1. logging:
  2. config: classpath:logback-local.xml
  3. spring:
  4. cloud:
  5. stream:
  6. default:
  7. contentType: application/*+avro
  8. producer:
  9. headerMode: embeddedHeaders
  10. bindings:
  11. messagereceived:
  12. binder: kafka
  13. contentType: "application/json"
  14. default-binder: kafka
  15. kafka:
  16. binder:
  17. configuration:
  18. security:
  19. protocol: SSL
  20. ssl:
  21. truststore:
  22. location: ${JAVA_HOME}\lib\security\cacerts
  23. password:***
  24. type: JKS
  25. kafka:
  26. properties:
  27. max.in.flight.requests.per.connection: 1
  28. request.timeout.ms: 30000
  29. max.block.ms: 3000
  30. producer:
  31. retries: 3

所以我的问题是如何设置 spring-cloud-starter-parent:Hoxton.SR9 合适吗?
谢谢你的建议!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题