spring集成测试绑定器无法重载默认绑定器

wfsdck30  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(293)

我试图利用最新的springcloudstream文档来实现一个基本的单元测试,使用推荐的基于jvmbroker的spring集成。
这是一个基于gradle的项目,因此我将maven依赖关系声明翻译为:

  1. testImplementation 'org.springframework.cloud:spring-cloud-stream:3.0.7.RELEASE:test-binder'

处理器本身是直截了当的,获取原始对象并将其转换为规范化对象。虽然尚未实现正确的测试,但处理器的输出与预期一致:

  1. @SpringBootApplication
  2. public class SpringProcessorApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(SpringProcessorApplication.class, args);
  5. }
  6. @Bean
  7. public java.util.function.Function<KStream<String, RawLocationObservation>, KStream<String, NormalizedLocationObservation>> process() {
  8. Logger logger = LoggerFactory.getLogger(SpringProcessorApplication.class);
  9. return input -> input
  10. .mapValues(value -> {
  11. ....

虽然我最终计划测试输出是否正确规范化,但在这个阶段,我只是试图Assert输出不是空的:

  1. @SpringBootTest
  2. class SpringProcessorApplicationTests {
  3. @Test
  4. public void sampleTest() {
  5. try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
  6. TestChannelBinderConfiguration.getCompleteConfiguration(
  7. SpringProcessorApplication.class))
  8. .run("--spring.cloud.function.definition=process")) {
  9. InputDestination source = context.getBean(InputDestination.class);
  10. OutputDestination target = context.getBean(OutputDestination.class);
  11. RawLocationObservation raw = new RawLocationObservation(...);
  12. source.send(MessageBuilder.withPayload(raw).build());
  13. assertNotNull(target.receive().getPayload());
  14. }
  15. }

测试运行,但似乎没有试图重载默认绑定器加载,因此测试在尝试连接到不存在的代理时超时localhost:9092 (或者在application.yml中配置的任何东西)。
我需要做什么来确保加载测试绑定器而不是默认绑定器?

暂无答案!

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

相关问题