添加@RunWith for jbehave-junit-runner break使用Maven构建JBehave [英] Adding @RunWith for jbehave-junit-runner breaks JBehave build using Maven
问题描述
结果 mvn clean install
安装 https://github.com/codecentric/jbehave-junit-runner :
[INFO] ------------------------- ------------------------------------
[错误]编译错误:
[INFO] ----------------------------------------------- --------------
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java: [28,23]错误:package org.junit.runner不存在
[ERROR] / Users / mosofsky / Developer / FollowerDownloader / followerdownloader-frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories。 java:[42,1]错误:找不到符号
[ERROR]符号:class RunWith
/ Users / mosofsky / Developer / FollowerDownloader / oader-frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories.java:[28,23]错误:package org.junit.runner不存在
[ERROR] / Users / mosofsky / Developer / FollowerDownloader / followerdownloader-frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories.java:[42,1]错误:找不到符号
[ERROR]符号:class RunWith
/ Users / mosofsky / Developer / FollowerDownloader / followerdownloader-frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories.java:[50,28]错误:无法访问Runner
[INFO] 5错误
[信息] ------------------------------------------------ -------------
[INFO] ------------------------------ ------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------ ------------------------------
[INFO]总时间:2.043 s
[INFO]已完成at:2014-12-23T15:38:39-08:00
[INFO] Final Memory:14M / 156M
[INFO] ---------- -------------------------------------------------- ------------
[错误]执行目标无法执行org.apache.maven.plugins:maven-compiler-plugin:2.5.1:在项目跟踪器上编译(默认编译) -frontend:编译失败:编译失败:
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[28,23]错误:package org.junit.runner不存在
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[42, 1]错误:找不到符号
[ERROR]符号:class RunWith
[ERROR] / Users / mosofsky / Developer / FollowerDownloader / followerdownloader-frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories.java:[28,23]错误:package org.junit.runner不存在
[ERROR] / Users / mosofsky / Developer / FollowerDownloader / followersdownloader -frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories.java:[42,1]错误:找不到符号
[ERROR]符号:class RunWith
[ERROR] / Users / mosofsky / Developer / FollowerDownloader / followerdownloader-frontend / src / main / java / com / netbase / followerdownloader / FollowerDownloaderStories.java:[50,28]错误:无法访问Runner
[ERROR] - > [帮助1]
[ERROR]
[ERROR]要查看错误的完整堆栈跟踪,请使用-e开关重新运行Maven。
[ERROR]使用-X开关重新运行Maven以启用完整的调试日志记录。
[ERROR]
[ERROR]有关错误和可能的解决方案的更多信息,请阅读以下文章:
[错误] [帮助1] http://cwiki.apache.org / confluence / display / MAVEN / MojoFailureException
关于 https://github.com/codecentric/jbehave-junit-runner 破坏了我的构建?
问题的解决方法是通过从pom.xml文件中的junit中删除测试元素来扩大junit的范围:
<依赖关系>
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> 4.11< / version>
<! - < scope> test< / scope> - > <! - 解决方案:通过本行 - >
< / dependency>
我想我偶然发现了JBehave和行为驱动设计(BDD)的悖论:
- 一方面,BDD没有测试(参见 http://jbehave.org/reference/stable/examples-philosophy.html )。另一方面,BDD的工具 https: //github.com/codecentric/jbehave-junit-runner 取决于测试框架中的@RunWith注释,具体来说是org.junit.runner.RunWith。
如果我不再将junit的范围限制在 Maven标准测试目录。
不过,我的解决方案解决了原来的问题。
I'm using JBehave with my Maven build which I also develop in Eclipse and sometimes run the my unit tests with the JUnit runner in Eclipse. I found jbehave-junit-runner works well for beautifying the JBehave stories in the JUnit runner. However, adding jbehave-junit-runner seems to have broken my Maven build.
Result of mvn clean install
after installing https://github.com/codecentric/jbehave-junit-runner:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[28,23] error: package org.junit.runner does not exist
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[42,1] error: cannot find symbol
[ERROR] symbol: class RunWith
/Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[28,23] error: package org.junit.runner does not exist
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[42,1] error: cannot find symbol
[ERROR] symbol: class RunWith
/Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[50,28] error: cannot access Runner
[INFO] 5 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.043 s
[INFO] Finished at: 2014-12-23T15:38:39-08:00
[INFO] Final Memory: 14M/156M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project followerdownloader-frontend: Compilation failure: Compilation failure:
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[28,23] error: package org.junit.runner does not exist
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[42,1] error: cannot find symbol
[ERROR] symbol: class RunWith
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[28,23] error: package org.junit.runner does not exist
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[42,1] error: cannot find symbol
[ERROR] symbol: class RunWith
[ERROR] /Users/mosofsky/Developer/FollowerDownloader/followerdownloader-frontend/src/main/java/com/netbase/followerdownloader/FollowerDownloaderStories.java:[50,28] error: cannot access Runner
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
What is it about https://github.com/codecentric/jbehave-junit-runner that broke my build?
The solution to the problem is to broaden the scope of junit by removing the test element from the junit in the pom.xml file:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- <scope>test</scope> --> <!-- SOLUTION: COMMENTED OUT THIS LINE -->
</dependency>
I think I stumbled into a paradox of JBehave and Behavior Driven Design (BDD):
- On the one hand, BDD is not testing (see http://jbehave.org/reference/stable/examples-philosophy.html).
- On the other hand, a tool for BDD, https://github.com/codecentric/jbehave-junit-runner, depends on the @RunWith annotation that's in a test framework, specifically org.junit.runner.RunWith.
I worry that my solution may have consequences for my production code if I'm no longer limiting the scope of junit to the Maven standard test directory.
Nevertheless, my solution did solve the original problem.
这篇关于添加@RunWith for jbehave-junit-runner break使用Maven构建JBehave的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!