在Junit ClassRule中访问spring-boot application.properties元素

时间:2018-12-10 03:16:40

标签: spring-boot spring-boot-test

我想在junit静态类规则中访问资源/属性文件元素(在下面的代码中,其cardEventTopiccardEventErrorTopic常量)。有什么办法可以做到这一点?由于元素已经存在于属性文件中,因此我不想将它们作为静态常量放入测试文件中。此外,@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
}

1 个答案:

答案 0 :(得分:0)

您可以通过类注释定义EmbeddedKafka,并在那里使用spEL定义主题:

@EmbeddedKafka(topics = {"${my.topic1}", "${my.topic2}"})

或者您可以在任意配置类中将embededKafka定义为单独的bean,并具有所需的所有属性。

别忘了自动接线。

@Autowired
private EmbeddedKafkaBroker embeddedKafka;