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

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

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

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

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

@SpringBootApplication
public class SpringProcessorApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringProcessorApplication.class, args);
    }

    @Bean
    public java.util.function.Function<KStream<String, RawLocationObservation>, KStream<String, NormalizedLocationObservation>> process() {

        Logger logger = LoggerFactory.getLogger(SpringProcessorApplication.class);

        return input -> input
            .mapValues(value -> {
                ....

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

@SpringBootTest
class SpringProcessorApplicationTests {

    @Test
    public void sampleTest() {
        try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
            TestChannelBinderConfiguration.getCompleteConfiguration(
                SpringProcessorApplication.class))
            .run("--spring.cloud.function.definition=process")) {

            InputDestination source = context.getBean(InputDestination.class);
            OutputDestination target = context.getBean(OutputDestination.class);

            RawLocationObservation raw = new RawLocationObservation(...);

            source.send(MessageBuilder.withPayload(raw).build());

            assertNotNull(target.receive().getPayload());
    }
}

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

暂无答案!

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

相关问题