当前位置: 首页 > 知识库问答 >
问题:

JBehave故事不会作为Embeddables运行

钱星辰
2023-03-14

我一直在尝试使用JBehave运行并发的多线程故事。它们在使用嵌入器时正确运行,但在将它们作为可嵌入对象运行时,它们不会执行。当我更改源目录或作用域时,我得到一个nullpointerException,当我注释掉它们时,它成功构建,但找不到类“My-ProgramStories.java”。当我使用带有“mvn clean verify”的Maven执行它们时,这就是返回的内容(抱歉丑陋的格式):

[INFO]---jbeper-maven-plugin:3.7.5:run-stories s-as-嵌入的(嵌入的故事)@程序测试

这就是我在POM中配置JBehave Maven插件的方式:

<properties>
   <embeddables>**/My-ProgramStories.java</embeddables>
   <ignore.failre.in.stories>true</ignore.failre.in.stories>
   <meta.filter>groovy: story_path ==~ /.*.story/</meta.filter>
   <threads>4</threads>
   <story.timeout.in.secs>400</story.timeout.in.secs>
</properties>

...

<plugin>
   <groupId>org.jbehave</groupId>
      <artifactId>jbehave-maven-plugin</artifactId>
         <executions>
            <execution>
               <id>embeddable-stories</id>
                  <phase>integration-test</phase>
                     <configuration>
                        <includes>
                           <include>${embeddables}</include>
                        </includes>
                        <excludes>
                           <exclude>${exclude}</exclude>
                        </excludes>
                        <scope>test</scope>
                        <sourceDirectory>src/test/java</sourceDirectory>
                        <testSourceDirectory>src/test/resources</testSourceDirectory>
                        <skip>${skip}</skip>
                        <batch>false</batch>
                        <threads>${threads}</threads>
                        <storyTimeoutInSecs>${story.timeout.in.secs}</storyTimeoutInSecs>
                        <generateViewAfterStories>true</generateViewAfterStories>
                        <ignoreFailureInStories>
                           ${ignore.failre.in.stories}
                        </ignoreFailureInStories>
                        <ignoreFailureInView>true</ignoreFailureInView>
                        <metaFilters>
                           <metaFilter>${meta.filter}</metaFilter>
                        </metaFilters>
                     </configuration>
                     <goals>
                        <goal>run-stories-as-embeddables</goal>
                     </goals>
                  </execution>
               </executions>
   <dependencies>
      <dependency>
         <groupId>org.codehaus.groovy</groupId>
         <artifactId>groovy-all</artifactId>
         <version>1.8.4</version>
      </dependency>
   </dependencies>
</plugin>

通过 Eclipse 查看,我的故事和测试类以及我的故事文件的结构如下:

我的程序测试
--

这是错误的堆栈跟踪:

[错误]无法对项目my-program执行目标org . jbehave:jbehave-maven-plugin:3 . 7 . 5:run-stories-as-embedded ables(embedded-stories):无法将故事作为可嵌入内容运行:NullPointerException -

共有1个答案

萧懿轩
2023-03-14

基于此

Caused by: java.lang.NullPointerException at 
   org.codehaus.plexus.util.AbstractScanner.normalizePattern(AbstractScanner.java:327) at
   org.codehaus.plexus.util.AbstractScanner.setExcludes(AbstractScanner.java:314) at 

看起来您的排除模式配置已损坏。它看起来像这样:

<exclude>${exclude}</exclude>

未在属性中定义。您可以使用 effective-pom 来确认是否正确扩展了所有属性。

 类似资料:
  • 我不知道为什么,但JBehave没有考虑给定故事中的失败。如果givenstory出现故障,它将不执行该故事的其余步骤,但将执行给定故事的其余部分。下面是一个例子: 例如,如果Story2.story失败,我预计给定故事的其余部分和最后2个步骤都没有执行。但事实的确如此。 有人知道为什么吗?如果一个步骤或故事失败,我怎么能让所有故事都失败? 我还注意到,报告的统计数据只反映了最后一个给定的故事和后

  • 我试图实现一个简单的程序来学习如何使用JBehave!!。该程序将两个数字相加。我从http://jBehave.org/eclipse-integration.html安装了eclipse插件,然后从http://jBehave.org/download.html下载了jBehave文件,并将。zip文件添加到构建路径中。但是我不能导入有什么建议吗?

  • 当我尝试向UIViewController添加UIBarButtonItem时,在运行时没有显示任何内容。 我所做的: 我从一个全新的单视图项目开始。 我将一个UIBarButtonItem拖入视图控制器。 我现在可以在故事板中查看和自定义项目,但是当我运行它时,没有工具栏。 注意:栏按钮项显示为视图控制器的直接子项。 如何让UIToolbar出现?

  • 我在Maven构建中使用JBehave,我也在Eclipse中开发它,有时在Eclipse中使用JUnit runner运行我的单元测试。我发现jbehave junit runner可以很好地美化jbehave中的故事。然而,添加jbehave junit runner似乎破坏了我的Maven构建。 安装后mvn清洁安装的结果https://github.com/codecentric/jbeh

  • 在Serenity BDD中,有没有一种方法可以从依赖项中导入步骤用于本地故事?我正在从其他团队引入其他库(也使用Serenity ),希望能够在我自己的故事中使用他们的一个步骤。我可以找到一种方法来导入和运行他们的故事,但不仅仅是为了我自己的使用而引入他们的步骤。 我使用Java作为基础语言。

  • 奇怪的是,即使是这种变体 我还是得到同样的错误。