我有多个项目在不同的项目中使用类似的步骤定义。因此,在单个项目中使用所有步骤定义,并在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>
答案 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}}。