Spring-boot, JUnit тестирует с использованием разных профилей - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь использовать профили application.properties для интеграционных тестов с использованием JUnit для проверки двух разных платформ.

Я попытался сделать это с помощью базового файла конфигурации application.properties, который содержит общие конфигурации для обеих платформ, и, кроме того, я добавил файлы свойств application-tensorflow.properties application-caffe.properties для каждой платформы, которые имеют конкретные конфигурации платформ, но я обнаружил, что в JUnit он работает не так, как в основном приложении.

мой класс конфигурации теста выглядит следующим образом:

@Configuration
@PropertySource("classpath:application.properties")
@CompileStatic
@EnableConfigurationProperties
class TestConfig {...}

Я использую @PropertySource("classpath:application.properties"), поэтому он распознает мои основные конфигурации, там я также пишу spring.profiles.active=tensorflow, в надежде, что он распознает профиль приложения tenorflow, но не читает из файла: /src/test/resources/application-tensorflow.properties, ни с /src/main/resources/application-tensorflow.properties, как в основном приложении.

Есть ли специальный способ указать профиль пружины в тесте JUnit? Как лучше всего добиться того, что я пытаюсь сделать?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Первое: добавьте @ActiveProfiles в ваш тестовый класс, чтобы определить активные профили.

Кроме того, вам необходимо настроить загрузку файлов конфигурации.Есть два варианта:

  • В простом интеграционном тесте с @ContextConfiguration(classes = TheConfiguration.class, initializers = ConfigFileApplicationContextInitializer.class)
  • В полном тесте Spring Boot с @SpringBootTest

Пример тестакласс:

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({ "test" })
public class DummyTest {

    @Autowired
    private Environment env;

    @Test
    public void readProps() {
        String value = env.getProperty("prop1") + " " + env.getProperty("prop2");
        assertEquals("Hello World", value);
    }
}

Теперь файлы src/test/resources/application.properties и src/test/resources/application-test.properties оцениваются.

0 голосов
/ 16 сентября 2018

Вы пытались аннотировать ваш тест с помощью

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles(profiles = {"tensorflow"})

Также убедитесь, что application-tensorflow.properties находится в / src / test / resources

...