我已经与Selenium集成了jbe。我正在通过命令行运行我的测试,如下所示
C:\eclipse_workspace\MySeleniumTests>mvn clean test -Dwebdriver.firefox.bin="C:\Program Files\Mozilla\Firefox\firefox.exe"
我使用过jbehave-maven-plugin。 Maven从源目录中获取所有Embedder impl(在我的情况下为JunitStories)并逐个执行它们。其配置为pom.xml中的<include>**/*Stories.java</include>
然后在指定的dir
中查找相关的.story文件并执行它们。说,我有两个故事文件one.story和two.story,它们都被执行。
有一段时间,故事文件的数量会增加我只想有办法执行特定的故事文件吗?我想将特定的故事文件名作为运行时参数传递,但不知道实现这一点需要什么。
答案 0 :(得分:2)
我使用下面的代码
mvn clean test -Dwebdriver.firefox.bin="C:\Program Files\Mozilla\Firefox\firefox.exe" -Dstory=myStory.story
覆盖嵌入类中的storyPaths()方法,如下所示。
public class MyTestStories extends JUnitStories /* InjectableEmbedder */{
@Override
protected List<String> storyPaths() {
List<String> storiesToRun = new ArrayList<String>();
String storyProperty = System.getProperty("story");
if (storyProperty == null || storyProperty.isEmpty()) {
throw new RuntimeException("Please specify which stories to run");
}
String[] storyNames = storyProperty.split(",");
StoryFinder sf = new StoryFinder();
URL baseUrl = CodeLocations.codeLocationFromClass(this.getClass());
for (String storyName : storyNames) {
storiesToRun.addAll(sf.findPaths(baseUrl, storyName, ""));
}
return storiesToRun;
}
答案 1 :(得分:0)
尝试以下方法:
mvn clean test -Dwebdriver.firefox.bin="C:\Program Files\Mozilla\Firefox\firefox.exe" -Djbehave.story.name=<story filename without extension (wildcards are supported)>
您还应该使用自定义测试套件实现:
public abstract class JBehaveTestSuite extends ThucydidesJUnitStories {
private static final String STORY_NAME_PATTERN = "**/${jbehave.story.name:*}.story";
public JBehaveTestSuite() {
findStoriesCalled(storyNamesFromEnvironmentVariable());
}
@Override
public void run() throws Throwable {
super.run();
}
private String storyNamesFromEnvironmentVariable() {
return SystemPropertyUtils.resolvePlaceholders(STORY_NAME_PATTERN);
}
}