0

JBehave を使用して、マルチスレッドのストーリーを同時に実行しようとしています。Embedder を使用すると正しく実行されますが、embeddables として実行すると実行されません。ソース ディレクトリまたはスコープを変更すると、nullpointerException が発生し、それらをコメント アウトすると、正常にビルドされますが、クラス "My-ProgramStories.java." が見つかりません。「mvn clean verify」でMavenを使用してそれらを実行すると、これが返されます(醜いフォーマットで申し訳ありません):

[INFO] --- jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (embeddable-stories) @ program-test> ---
[INFO] Embedder を使用してストーリーを埋め込み可能として実行する/Documents/Repositories///target/classes, groovy-all-1.8.4.jar],parent=ClassRealm[plugin>org.jbehave:jbehave-maven-plugin:3.7.5, 親: sun.misc.Launcher$ AppClassLoader@1729854]]、embedderControls= UnmodifiableEmbedderControls[EmbedderControls[batch=false,skip=false,generateViewAfterStories true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=false, verboseFiltering=false,storyTimeoutInSecs=400,threads=4]],embedderFailureStrategy =org.jbehave.core.embedder.Embedder$ThrowingRunningStoriesFailed@127c1 ee,configuration=org.jbehave.core.configuration.MostUsefulConfiguration@10c56cbd,candidateSte s=[],stepsFactory=,metaFilters=[groovy: story_path ==~ /.*.story/],systemProperties {},executorService=,executorServiceCreated=false,storyManager=]
[情報] - - - - - - - - - - - - - - - - - - - - - - - - -------------------------
[情報] ビルドの失敗
[情報] ----------------- -------------------------------------------------- -----
[INFO] 合計時間: 1:04.710s
[INFO] Finished at: Mon Jul 29 09:55:43 CDT 2013
[INFO] Final Memory: 60M/123M
[INFO] ------- -------------------------------------------------- ---------------
[エラー] プロジェクト でゴール org.jbehave:jbehave-maven-plugin:3.7.5:run-stories-as Embeddables (embeddable-stories) を実行できませんでした:ストーリーを埋め込み可能として実行できませんでした: NullPointerException -> [ヘルプ 1]

これは、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-test
-->src/test/java
---->package1
------>My-ProgramSteps.java
------>My-ProgramStories.java
-->src/test/リソース
---->package1
------>ストーリー ファイル

エラーのスタックトレースは次のとおりです。

[エラー] プロジェクト my-program でゴール org.jbehave:jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (embeddable-stories) を実行できませんでした: 埋め込み可能オブジェクトとしてストーリーを実行できませんでした: NullPointerException -> [ヘルプ 1] org.apache.maven.lifecycle.LifecycleExecutionException: プロジェクト my-program-test でゴール org.jbehave:jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (embeddable-stories) を実行できませんでした: org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) でストーリーを埋め込み可能として実行できませんでしたorg.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) org.apache.maven.lifecycle.internal.LifecycleStarter.execute( LifecycleStarter.java:161) org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) org.apache.maven.cli.MavenCli .execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun. Sun.reflect.DelegatingMethodAccessorImpl の sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で、reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)。org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) での java.lang.reflect.Method.invoke(Method.java:597) での invoke(DelegatingMethodAccessorImpl.java:25) .plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) org.codehaus.plexus.classworlds.launcher.Launcher で.main(Launcher.java:352) 原因: org.apache.maven.plugin.MojoFailureException: org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:20) で org.apache でストーリーを埋め込み可能として実行できませんでした。 maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ...19 以上の原因: org.codehaus.plexus.util.AbstractScanner.normalizePattern(AbstractScanner.java:327) の java.lang.NullPointerException org.codehaus.plexus.util.AbstractScanner.setExcludes(AbstractScanner.java:314) の org .jbehave.core.io.StoryFinder.scanDirectory(StoryFinder.java:218) at org.jbehave.core.io.StoryFinder.scan(StoryFinder.java:205) at org.jbehave.core.io.StoryFinder.findClassNames(StoryFinder) .java:61) at org.jbehave.mojo.AbstractEmbedderMojo.classNames(AbstractEmbedderMojo.java:302) at org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:18) ... 21 もっと見るsetExcludes(AbstractScanner.java:314) org.jbehave.core.io.StoryFinder.scanDirectory(StoryFinder.java:218) org.jbehave.core.io.StoryFinder.scan(StoryFinder.java:205) org.jbehave .core.io.StoryFinder.findClassNames(StoryFinder.java:61) at org.jbehave.mojo.AbstractEmbedderMojo.classNames(AbstractEmbedderMojo.java:302) at org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:18) . .. 21以上setExcludes(AbstractScanner.java:314) org.jbehave.core.io.StoryFinder.scanDirectory(StoryFinder.java:218) org.jbehave.core.io.StoryFinder.scan(StoryFinder.java:205) org.jbehave .core.io.StoryFinder.findClassNames(StoryFinder.java:61) at org.jbehave.mojo.AbstractEmbedderMojo.classNames(AbstractEmbedderMojo.java:302) at org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:18) . .. 21以上execute(RunStoriesAsEmbeddables.java:18) ... 21 もっと見るexecute(RunStoriesAsEmbeddables.java:18) ... 21 もっと見る

4

1 に答える 1

0

これに基づいて

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 を使用して、すべてのプロパティが適切に展開されているかどうかを確認できます。

于 2013-11-01T17:39:18.743 に答える