программно установить профиль Spring в огурце

Я начал использовать тесты огурцов для своего приложения Spring. Я установил активный профиль Spring, передав аргумент jvm spring.profiles.active = testProfile.

Есть ли способ сделать это программно? Что-то типа:

@RunWith(Cucumber.class)
@Cucumber.Options(...)
@ActiveProfiles("testProfile")
public class MyCucumberTest

Использование огурца 1.1.6


person perseger    schedule 24.03.2014    source источник
comment
Как насчет того, чтобы просто вставить статический блок. открытый класс MyCucumberTest {static {System.setproperty (spring.profiles.active, testProfile)}}   -  person Surendra Rathore    schedule 15.09.2020


Ответы (4)


Я не уверен, что это правильный способ сделать это, но, по крайней мере, он работает для меня. Я использую огурец версии 1.2.4

Я специализировал бегунок Cucumber junit, чтобы установить желаемый профиль пружины в конструкторе: public class SpringProfileCucumber extends Cucumber { public SpringProfileCucumber(Class clazz) throws InitializationError, IOException { super(clazz); System.setProperty("spring.profiles.active", "testProfile"); } }

В тесте используйте бегун Junit SpringProfileCucumber @RunWith(SpringProfileCucumber.class) @CucumberOptions(features = {"src/test/java/tests/cucumber/test.feature"}, glue = { "tests.cucumber"}) public class MyCucumberTest { // ... the test }

person perseger    schedule 02.04.2014

Это устаревает. Использование cucumber.xml не применимо для cucumber-jvm.

У меня похожая проблема, пытаюсь использовать:

@ActiveProfiles(value = "DEV", inheritProfiles = false)
@IfProfileValue(name= "ENV", value = "DEV")

с командной строкой:

-DENV=DEV -Dspring.active.profiles=DEV

Похоже, что эти директивы не работают с библиотекой spring-cucumber (по крайней мере, 1.1.5).

person Jax Gibb    schedule 27.10.2014

Расширяя ответ @perseger, следующий специализированный бегун позволяет использовать аннотацию @ActiveProfiles

public class SpringProfileCucumber extends Cucumber {
    public SpringProfileCucumber(Class clazz)
            throws InitializationError, IOException {
        super(clazz);
        ActiveProfiles ap = (ActiveProfiles) clazz
                .getAnnotation(ActiveProfiles.class);
        if (ap != null) {
            System.setProperty("spring.profiles.active",
                    String.join(",", ap.value()));
        }
    }
}

Затем в тесте вы можете использовать

@RunWith(SpringProfileCucumber.class)
@CucumberOptions(...)
@ActiveProfiles("testProfile")
public class RyvrTests {

}
person Tom Howard    schedule 08.03.2017
comment
Сработало для меня как шарм. Спасибо! - person Jasper Sprengers; 29.12.2017

Кроме того, вы также можете создать аннотацию для активации профиля для огурца. Выглядит это так:

import java.lang.annotation.*;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ContextConfiguration
@ActiveProfiles("test")
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
    classes = FeatureTestConfiguration.class)
public @interface FeatureFileSteps {
}

Цитата из моего ответа на этот вопрос:

Как активировать профиль весенней загрузки с огурцом

person Pim Hazebroek    schedule 04.04.2017