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 もっと見る