spring-boot - 在 Junit ClassRule 中访问 spring-boot application.properties 元素
问题描述
我想在 junit 静态类规则中访问资源/属性文件元素(在下面的代码中它的cardEventTopic
和常量)。cardEventErrorTopic
有什么办法可以做到这一点?由于元素已经存在于属性文件中,我不想将它们作为静态常量放在测试文件中。也不适用于@Value("${}")
静态上下文。如果有办法使这项工作有任何帮助。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = PaymentAccountUpdaterApplication.class,
webEnvironment = SpringBootTest.WebEnvironment.NONE)
@TestPropertySource(locations = "classpath:application-messaging.properties")
public class CardIntegrationTest {
private final static String cardEventTopic = "TP.PRF.CARDEVENTS";
private final static String cardEventErrorTopic = "TP.PAYMENTS.CARDEVENTS.ERRORS";
@ClassRule
public static KafkaEmbedded kafkaEmbedded =
new KafkaEmbedded(1, false, cardEventTopic, cardEventErrorTopic);
// rest of the code
}
解决方案
您可以通过类注释定义嵌入式Kafka,并在那里使用 spEL 定义主题:
@EmbeddedKafka(topics = {"${my.topic1}", "${my.topic2}"})
或者,您可以在任何配置类中将 embededKafka 定义为单独的 bean,并具有您需要的所有属性。
并且不要忘记自动装配它。
@Autowired
private EmbeddedKafkaBroker embeddedKafka;
推荐阅读
- flutter - NoSuchMethodError:在 null 上调用了 getter
- ruby - 在 Ruby 中与负载测试一起使用的随机数据生成器
- javascript - 为什么使用“等待”在“异步”功能中不起作用。未等待完成的功能
- vue.js - Vue 3 故事书
- android - TextView 无法在 ConstraintLayout 中环绕文本
- javascript - 用于增加滚动价值的 Java 脚本?
- css - SCSS :从另一个文件导入变量和样式规则。我不想要重复样式规则
- c# - 为什么我不能将可空元组用于可空泛型参数
- docker - Python Docker 库不适用于 Django REST Image
- java - 将mongodb与springboot restful webservice连接时出错