设置CucumberOptions"功能"在Java中动态地从内部

时间:2016-09-12 14:48:53

标签: java selenium junit cucumber cucumber-jvm

我试图在Java中使用Cucumber和Selenium创建一个便携式测试套件。从我的主要方法来看,我做了这样的事情:

 JPanel panel = new JPanel();    
    // adding panel to frame
    frame.add(panel, BorderLayout.CENTER);
    /* calling user defined method for adding components
     * to the panel.
     */
    placeComponents(panel);
    //Set the size of the window

    //Set the frame to appear in the center of the screen. 
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation(dim.width/2-frame.getSize().width/2, dim.height/2-frame.getSize().height/2);

    // Setting the frame visibility to true
    frame.setVisible(true);

    System.out.println("Gonna Try to launch the test");
    RunCukeTests.main(args);

我有一个简单的配置类(我计划添加更多功能)

public class FeatureConfig {

private static String filePath = "";


public static String getFilePath() {
    return filePath;
}

}

我的TestRunner类看起来像这样:

@RunWith(Cucumber.class)
//@Feature("my/package/**/*.feature")
@CucumberOptions(

  //features= {"src/test/java/multiTest"}
  features= {FeatureConfig.getFilePath() }
, glue={"stepDefs"}
, monochrome = true
, plugin = {"pretty"}
)

public class RunCukeTests {
    public static void main(String[] args) throws Exception {    
        System.out.println("This is a test");
        JUnitCore junit = new JUnitCore();
        Result result = junit.run(windowGui.RunCukeTests.class); 
    }
}

我遇到的问题在

features= {FeatureConfig.getFilePath() }

哪个给我错误

The value for annotation attribute CucumberOPtions.feature must be a constant expression 

这是否意味着我无法在不使用命令行的情况下动态设置功能路径,或者有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:0)

如果要将功能路径设置为动态,我认为您必须在cucumber.api.cli.Main中执行主方法并正确设置参数。

但是,为什么需要动态更改功能的路径?我从未见过有关这方面的问题,并且对于驱使你朝这个方向发展的要求感到好奇。

您是否需要在不同时间执行不同的功能?如果是这种情况,也许使用标签可以帮助你。