从依赖性罐子的黄瓜步骤定义

时间:2016-08-23 05:04:57

标签: java eclipse maven cucumber cucumber-junit

我有多个项目在不同的项目中使用类似的步骤定义。因此,在单个项目中使用所有步骤定义,并在maven中添加为依赖jar。 当我使用maven命令运行时,它说:

您可以使用以下代码段实现缺少的步骤:

@When("^Import a canvas from \"(.*?)\" to project \"(.*?)\"$")
public void import_a_canvas_from_to_project(String arg1, String arg2) throws Throwable {
 // Write code here that turns the phrase above into concrete actions
  throw new PendingException();
  }

但是当我在同一个项目中添加包时,它可以正常工作。 (即使在不同项目的日食中工作)。有没有办法从maven和jenkins运行这样的场景?

我正在使用eclipse IDE。我使用的maven命令是:      mvn -DprofileTest = cucumberID clean -P cucumberID test

cucumberID是我的个人资料名称。

我在pom.xml中添加了以下个人资料

<profile>
<id>cucumberID</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <version>2.11</version>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <includes>
                                <include>step_definitions/LoginTest.java</include>
                    </includes>
                    <parallel>classes</parallel>
                    <threadCount>3</threadCount>
                    <useFile>true</useFile>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

3 个答案:

答案 0 :(得分:3)

您尚未指定运行测试套件的方式,但假设某处有@CucumberOptions,您可以指向其他项目包:

@CucumberOptions(. . . glue = {
        "com.company.test.package1", "com.company2.test.package2", . . .})

答案 1 :(得分:1)

使用classpath:包名称的前缀来解决这个问题。

例如: @CucumberOptions(glue = { "classpath:com.example.test.steps" })

答案 2 :(得分:0)

如果您将使用Maven首选的创建程序包的方式,然后“ mvn程序包”您的代码,并“ mvn安装”此程序包,那么您将能够从外部库运行测试,而无需更改带有{{ 1}}。