使用Maven运行JBehave的问题

时间:2012-09-20 11:54:13

标签: java maven maven-plugin jbehave

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

我所有的JBehave课程都住在:

  

的src /在/ 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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

与maven一起运行的JBehave遵循Maven规则来定位代码和文本工件。 对于测试范围,您必须将它们放在src / test / java和src / test / resources中。对于编译范围是src / main / java和src / main / resources。

使用JBehave和maven你可以使用两个范围(测试或编译),你只需要在插件配置中设置你想要的那个,这样你就可以选择放置工件的位置。它默认为编译。

在您的情况下,您要添加新的测试源,因此您必须将范围设置为test:

see detail here.

答案 2 :(得分:0)

也许jbehave-maven-plugin找不到已编译的测试类(场景),因为它看起来是错误的类路径。

请查看您的目标目录并搜索可嵌入的类 - &gt;目标/类或目标/测试类?

要解决这个问题,我必须在项目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>