Доступ к элементам spring-boot application.properties в Junit ClassRule - PullRequest
0 голосов
/ 10 декабря 2018

Я хотел бы получить доступ к элементам файла ресурсов / свойств (в приведенном ниже коде это cardEventTopic и cardEventErrorTopic константы) в правиле статического класса junit.Есть ли способ добиться этого?Поскольку элементы уже существуют в файле свойств, я не хочу помещать их как статическую константу в тестовые файлы.Также @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 голосов
/ 30 января 2019

Вы можете определить embeddedKafka с помощью аннотации класса и определить темы, используя spEL:

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

Или вы можете определить embededKafka как отдельный bean-компонент в любом классе конфигурации со всеми необходимыми свойствами.

И не забудьте автоматически подключить его.

@Autowired
private EmbeddedKafkaBroker embeddedKafka;
...