我的故事文件夹中的 jbehave 故事文件很少。每当我执行它按字母顺序执行的脚本时。
例如:当前执行
aaa.story
bbb.story
ccc故事
我希望执行是
ccc故事
bbb.story
并跳过 aaa.story
有没有办法以特定的顺序运行特定的故事。在宁静 BDD + Jbehave
我的故事文件夹中的 jbehave 故事文件很少。每当我执行它按字母顺序执行的脚本时。
例如:当前执行
aaa.story
bbb.story
ccc故事
我希望执行是
ccc故事
bbb.story
并跳过 aaa.story
有没有办法以特定的顺序运行特定的故事。在宁静 BDD + Jbehave
您可以使用Meta:来标记故事/场景。如果您只想运行故事/场景的子集或跳过其中一些,这很有用。例子:
Meta: @sometag
Scenario: some scenario
Given something
然后,您可以使用元过滤和故事映射来包含/排除标有某些标签的场景。
您可以更改故事文件名,以便它们的字典顺序与您希望它们执行的顺序相匹配:
1_aaa.story
2_bbb.story
3_ccc.story
或创建单独的文件夹:
a/aaa.story
a/bbb.story
c/ccc.story
如果您需要在另一个故事之前执行某个故事,那么有更好的解决方案,GivenStories:子句:
GivenStories: aaa.story
Scenario: requires aaa to run
Given something
这将首先执行 aaa.story 然后这个故事。您可以在 中指定多个故事GivenStories
。
我有一些类似的场景,我所做的是创建一个自定义的 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;
}
}