避免在Jbehave步骤中使用switch语句

问题描述 投票:0回答:1

我正在研究jbehave场景。我的步骤使用switch语句。可能有很多这样的标签。这意味着每次我必须添加另一个案例陈述。

如何用OOP替换switch语句?

现在我通过枚举来区分选项卡,因为只能从jbehave接收字符串。

但我相信有更优雅的方式。

当我在编辑器中打开发布并转到“受众”选项卡时

@When("I open publication in Editor and go to $tab tab")
public void openEditorAndGoToTab(String tab){

    TaggingUiTabs enumTab = EnumTextMatcher.matchEnum(tab, 
    TaggingUiTabs.getAllTabs());

    editorWindow.goToTaggingUi();
    switch (enumTab){
        case AUDIENCE:
            taggingUi.goToAudienceTab();
            break;
    }
}
java oop switch-statement jbehave
1个回答
1
投票

我有时使用Map来避免很长的开关,例如像这样:

private final Map<TaggingUiTabs, Runnable> actionMap;

public MyStepsClass() {
   actionMap.put(TaggingUiTabs.AUDIENCE, () -> taggingUi.goToAudienceTab());
   actionMap.put(TaggingUiTabs.OTHER_TAB, () -> taggingUi.goToOtherTab());
}

@When("I open publication in Editor and go to $tab tab")
public void openEditorAndGoToTab(String tab){

    TaggingUiTabs enumTab = EnumTextMatcher.matchEnum(tab, 
    TaggingUiTabs.getAllTabs());

    editorWindow.goToTaggingUi();
    actionMap.get(enumTab).run();
}

这样我就可以轻松添加更多动作。每当我无法重新设计其余代码以使其更加面向对象时,我发现它非常有用。

© www.soinside.com 2019 - 2024. All rights reserved.