我在故事文件夹中有很少的jbehave故事文件。每当我执行脚本时,它都按字母顺序排列。
例如: 当前执行
aaa.story
bbb.story
ccc.story
我希望执行
ccc.story
bbb.story
并跳过aaa.story
有没有办法按特定顺序运行特定故事。 在Serenity BDD + Jbehave
答案 0 :(得分:1)
您可以使用meta filtering标记故事/方案。如果您只想运行故事/方案的子集或跳过其中一些,这非常有用。 例如:
Meta: @sometag
Scenario: some scenario
Given something
然后,您可以使用story mapping和GivenStories:来包含/排除标有某些标记的方案。
您可以更改故事文件名,以便其词典顺序与您希望它们执行的顺序相匹配:
1_aaa.story
2_bbb.story
3_ccc.story
或创建单独的文件夹:
a/aaa.story
a/bbb.story
c/ccc.story
如果您需要在另一个sample by Apple here子句之前执行某个故事,还有更好的解决方案:
GivenStories: aaa.story
Scenario: requires aaa to run
Given something
这将首先执行aaa.story然后这个故事。您可以在GivenStories
中指定多个故事。
答案 1 :(得分:1)
我有一些类似的场景,我所做的是创建一个自定义的ThucydidesJUnitStories,在我的情况下,我只需要加载每个故事的步骤,以避免冲突,但在您的情况下,您可以添加任何类型的排序到您的故事列表。实施例
public class CustomThucydidesJUnitStories extends ThucydidesJUnitStories {
Logger logger = LoggerFactory.getLogger(CustomThucydidesJUnitStories.class);
private Configuration configuration;
private List<Format> formats = Arrays.asList(CONSOLE, STATS, HTML);
@Test
@Override
public void run() throws Throwable {
List<String> storyPaths = storyPaths();
logger.info("Total stories to run are {}", storyPaths.size());
//HERE YOU CAN SORT THE storyPaths as you wish
for(String storyPath : storyPaths) {
Embedder embedder = configuredEmbedder();
embedder.useConfiguration(configuration());
String storyName = storyPath.substring(storyPath.lastIndexOf("/") + 1, storyPath.indexOf(".story"));
logger.info("Running story {}", storyName);
embedder.useStepsFactory(ThucydidesStepFactory.withStepsFromPackage(getRootPackage() + "." + storyName, configuration()).andClassLoader(getClassLoader()));
embedder.useEmbedderControls(ignoreFailsEmbedderControls());
embedder.runStoriesAsPaths(Lists.newArrayList(storyPath));
}
}
public EmbedderControls ignoreFailsEmbedderControls() {
return new EmbedderControls().doIgnoreFailureInStories(true).doIgnoreFailureInView(true);
}
@Override
public Configuration configuration() {
if (configuration == null) {
net.thucydides.core.webdriver.Configuration thucydidesConfiguration = getSystemConfiguration();
configuration = ThucydidesJBehave.defaultConfiguration(thucydidesConfiguration, formats, this);
}
return configuration;
}
}