Parameters 如何从外部资源使用JBehave表格参数

Parameters 如何从外部资源使用JBehave表格参数,parameters,jbehave,tabular,Parameters,Jbehave,Tabular,要从internet上的外部资源中找到JBehave表格参数使用的完整解决方案确实很难。因此,我以一种更具描述性的方式,用一个非常简单的例子来写这篇文章 本文介绍如何使用外部数据文件使用JBehave表格参数。以下步骤将描述如何使用maven使用该功能 如下配置pom文件。 <build> <testResources> <testResource> <directory>src/test/java&

要从internet上的外部资源中找到JBehave表格参数使用的完整解决方案确实很难。因此,我以一种更具描述性的方式,用一个非常简单的例子来写这篇文章

本文介绍如何使用外部数据文件使用JBehave表格参数。以下步骤将描述如何使用maven使用该功能

如下配置pom文件。

<build>
    <testResources>
        <testResource>
            <directory>src/test/java</directory>
            <includes>
                <include>**/*.story</include>
                <include>**/*.table</include>**
            </includes>
        </testResource>
    </testResources>

    <plugins>
        <plugin>
编写步骤类,如下所示

Given get price data <price>
When print price unit <unit>

Examples:
com/jbehave/example/sample_data.table
|price|unit|
|10|EUR|
|20|USD|
|30|XXX|
public class SampleSteps extends Steps {
@Given("get price data <price>")
public void getPrice(@Named("price") String price){
    System.out.println("Price: " + price);
}

@When("print price unit <unit>")
public void printUnit(@Named("unit") String unit){
    System.out.println("Unit: " + unit);
}
}
项目结构将看起来像


希望这是更多的描述

我们可以使用csv文件而不是。Table您可以实现自己的机制来读取步骤定义中的CSV
public class SampleSteps extends Steps {
@Given("get price data <price>")
public void getPrice(@Named("price") String price){
    System.out.println("Price: " + price);
}

@When("print price unit <unit>")
public void printUnit(@Named("unit") String unit){
    System.out.println("Unit: " + unit);
}
}
public class SampleScenario extends JUnitStories {

@Override
public Configuration configuration() {
    return new MostUsefulConfiguration()
            .useStoryLoader(new LoadFromClasspath(this.getClass()))
            .useParameterConverters(new ParameterConverters().addConverters(new ParameterConverters.ExamplesTableConverter(new ExamplesTableFactory(new LoadFromClasspath(this.getClass())))))
            .useStoryReporterBuilder(new StoryReporterBuilder().withDefaultFormats().withFormats(Format.CONSOLE, Format.HTML));
}

@Override
public InjectableStepsFactory stepsFactory() {
    ArrayList<Steps> stepFileList = new ArrayList<Steps>();
    stepFileList.add(new SampleSteps());

    return new InstanceStepsFactory(configuration(), stepFileList);
}

@Override
protected List<String> storyPaths() {
    return new StoryFinder().
            findPaths(CodeLocations.codeLocationFromClass(
                            this.getClass()),
                    Arrays.asList("**/sample_story.story"),
                    Arrays.asList(""));    }

@Override
@org.testng.annotations.Test
public void run() throws Throwable {
    super.run();
}
}
 useParameterConverters(new ParameterConverters().addConverters(new ParameterConverters.ExamplesTableConverter(new ExamplesTableFactory(new LoadFromClasspath(this.getClass())))))