2014-03-24 70 views
1

我已經開始爲我的Spring應用程序使用黃瓜測試。我通過傳遞jvm參數spring.profiles.active = testProfile來設置活動的Spring配置文件。以編程方式設置黃瓜春季檔案

有沒有什麼辦法以編程方式做到這一點?喜歡的東西:

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

使用黃瓜1.1.6

回答

3

我不知道這是做了正確的方法,但至少得到它爲我工作。我使用的是黃瓜版本1.2.4

我專門黃瓜JUnit運行設置在構造函數中所需的彈簧簡介: public class SpringProfileCucumber extends Cucumber { public SpringProfileCucumber(Class clazz) throws InitializationError, IOException { super(clazz); System.setProperty("spring.profiles.active", "testProfile"); } }

在測試中使用SpringProfileCucumber JUnit運行 @RunWith(SpringProfileCucumber.class) @CucumberOptions(features = {"src/test/java/tests/cucumber/test.feature"}, glue = { "tests.cucumber"}) public class MyCucumberTest { // ... the test }

2

這正在變得過時。使用cucumber.xml不適用於cucumber-jvm。

我有類似的問題,欲以:

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

用的命令行:

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

看來,這些指示不與彈簧黃瓜庫工作(至少1.1.5)。

1

上@ 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 { 

} 
+0

工作就像對我的魅力。謝謝! –

0

另外,您還可以創建用於激活黃瓜檔案的註釋。它看起來像這樣:

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 { 
} 

從這個問題,我的回答引用:

How to activate spring boot profile with cucumber