使用Maven运行JBehave时遇到的问题

3

我正在尝试在Maven中执行一个JBehave故事,但它完全忽略了JBehave插件。我已经花费了几个小时使用不同的配置,但看起来插件根本没有被执行。任何建议/提示将不胜感激!

我所有的JBehave类都在:

src/at/java

pom.xml的相关部分:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
        <execution>
            <id>add-test-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/at/java</source>
                 </sources>
            </configuration>
    </execution>
</executions>
</plugin>

<plugin>
    <groupId>org.jbehave</groupId>
    <artifactId>jbehave-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>run-stories-as-embeddables</id>
            <phase>integration-test</phase>
            <configuration>
                <includes>
                     <include>**/*.java</include>
                </includes>
            </configuration>
           <goals>
               <goal>run-stories-as-embeddables</goal>
          </goals>
       </execution>
    </executions>
</plugin>


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.11</version>
    <executions>
        <execution>
            <id>integration-test</id>
            <phase>integration-test</phase>
            <goals>
                <goal>test</goal>
           </goals>
           <configuration>
               <skip>false</skip>
              <includes>
                   <include>**/*.java</include>
               </includes>
           </configuration>
        </execution>
    </executions>
</plugin>
3个回答

2
最好将测试类的位置更改为src/test/java,并根据JBehave文档更改故事的名称。

1
如果那真的是最好的解决方案,那么 JBehave 真的令人失望。这些是测试,为什么要将它们与生产代码一起放在 src/main/java 中呢? - Michael W
1
那是一个打错字。已经修复了。 - khmarbaise
我同意这个答案。最好遵循Maven的标准目录布局(SDL),并允许Surefire启动您的JBehave测试。 http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html - djangofan

1
JBehave在maven中的运行遵循Maven规则,用于定位代码和文本工件的位置。对于测试范围,您必须将它们放在src/test/java和src/test/resources中。对于编译范围是src/main/java和src/main/resources。
使用maven的JBehave可以使用两个范围(测试或编译),您只需要在插件配置中设置要使用的范围,因此您可以选择放置工件的位置。默认为编译。
在您的情况下,您正在添加一个新的测试源,因此您必须将范围设置为测试: 在此处查看详细信息。

0

也许 jbehave-maven-plugin 找不到编译后的测试类(场景),因为它在错误的类路径中查找。

请查看您的目标目录并搜索可嵌入的类 -> target/classes 或 target/test-classes?

为了解决这个问题,我必须在项目 pom.xml 的配置中将 jbehave-maven-plugin 的范围设置为测试。

这里是一个例子。

<plugin>
            <groupId>org.jbehave</groupId>
            <artifactId>jbehave-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>run-stories-as-embeddables</id>
                    <phase>integration-test</phase>
                    <goals>
                        <goal>run-stories-as-embeddables</goal>
                    </goals>
                    <configuration>
                        <scope>test</scope>
                        <includes>
                            <include>**/*Scenarios.java</include>
                        </includes>
                        <ignoreFailureInStories>true</ignoreFailureInStories>
                        <ignoreFailureInView>false</ignoreFailureInView>
                    </configuration>
                </execution>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接