2014-12-24 4 views
1

Я использую JBehave с моей сборкой Maven, которую я также разрабатываю в Eclipse, а иногда и запускаю свои модульные тесты с помощью JUnit runner в Eclipse. Я нашел, что jbehave-junit-runner хорошо работает, чтобы украсить рассказы JBehave в бегуне JUnit. Однако добавление jbehave-junit-runner, похоже, нарушило мою сборку Maven.Добавление @RunWith для разрывов jbehave-junit-runner Создание JBehave с использованием Maven

Результат mvn clean install после установки 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 

Что именно https://github.com/codecentric/jbehave-junit-runner, что сломал мою сборку?

ответ

1

Решение проблемы заключается в расширении сферы JUnit путем удаления тестового элемента из JUnit в файле pom.xml:

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.11</version> 
    <!-- <scope>test</scope> -->  <!-- SOLUTION: COMMENTED OUT THIS LINE --> 
</dependency> 

Я думаю, что я наткнулся на парадокс JBehave и поведения Driven Конструкция (BDD):

Я беспокоюсь, что мое решение может иметь последствия для моего производственного кода, если я больше не ограничиваю сферу применения junit до Maven standard test directory.

Тем не менее, мое решение действительно решило исходную проблему.

+0

JBehave говорит о создании собственного модуля для поведения. Сделать junit только компилировать область в этом модуле, тогда JUnit не будет частью вашего производственного кода, если ваше поведение не будет частью вашего производственного кода. –

+0

спасибо @StefanBirkner. Мне нужно много разобраться, так как я пытаюсь выполнить эту работу в Google App Engine, который имеет свои собственные требования к модулям (https://cloud.google.com/appengine/docs/java/modules/). Связанная проблема заключается в том, как совместно использовать код для всех этих модулей (http://stackoverflow.com/questions/27388111/can-google-app-engine-modules-share-source-code-just-like-maven-modules). Я уверен, что на эти вопросы нелегко ответить, но если у вас будет больше информации, я бы рад их приветствовать. –

+0

Извините, но у меня нет больше информации. –