我一直试图使用JBehave运行并发的多线程故事。它们在使用嵌入式程序时正确运行,但在作为可嵌入对象运行时,它们不执行。当我更改源目录或作用域时,我会得到一个nullpointerException,当我将它们注释掉时,它会成功构建,但找不到类“My-ProgramStories.java”。当我使用Maven和"mvn干净验证“执行它们时,这就是返回的内容(抱歉,格式太差了):
jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (嵌入式故事)@ program-test> 使用嵌入器classLoader=EmbedderClassLoader[urls=[/Users//Documents/Repositories///target/test-classes/,/Users//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 ==~ /.stepsFactory=/],systemProperties {},executorService=,executorServiceCreated=false,storyManager= 信息构建失败 信息 信息总时间:1:04.710 信息完成时间:周一7月29日09:55:43 CDT 2013 信息最终内存: 60M/123M 信息 错误未能在项目上执行目标org.jbehave:jbehave-maven-plugin:3.7.5:run-stories-as嵌入(可嵌入-故事):未能以可嵌入的形式运行故事: 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查看我的故事和测试类以及我的故事文件的结构如下:
我的程序测试 ->src/test/java ->包装1 ->src/test/resources ->包装1 ->故事档案
下面是错误的堆栈跟踪:
错误未能在项目我的程序上执行目标org.jbehave:jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (可嵌入故事):未能以可嵌入的形式运行故事: NullPointerException -> Help 1 org.apache.maven.lifecycle.LifecycleExecutionException:未能在project上执行目标org.jbehave:jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (可嵌入-故事):未能在org.apache.maven.lifecycle上以可嵌入的方式运行故事。internal.MojoExecutor.execute(MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at 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) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)在org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)引起的: org.apache.maven.plugin.MojoFailureException:未能在org.apache.maven.plugin的org.jbehave.mojo.RunStoriesAsEmbeddables.execute(RunStoriesAsEmbeddables.java:20)上以可嵌入的形式运行故事.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) . 19多由: java.lang.NullPointerException at org.codehaus.plexus.util.AbstractScanner.normalizePattern(AbstractScanner.java:327) at org.codehaus.plexus.util.AbstractScanner.setExcludes(AbstractScanner.java:314) at org.jbehave.core.io.StoryFinder.scanDirectory(StoryFinder.java:218)引起在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
发布于 2013-11-01 17:39:18
基于此
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>属性中未定义。您可以使用有效-pom来确认是否正确展开了所有属性。
https://stackoverflow.com/questions/17928594
复制相似问题