Почему не выполняются тесты после перехода с Play 2.2.2 на 2.3 с тестом активатора?

Я обновил свое приложение с Play 2.2.2 до 2.3. Мое приложение работает хорошо.

Иногда activator test выдает следующий результат:

[info] Loading project definition from /Users/myapp/project
[info] Set current project to myapp (in build file:/Users/myapp/)
[info] Compiling 23 Scala sources and 180 Java sources to /Users/myapp/target/scala-2.10/classes...
[info] Compiling 55 Java sources to /Users/myapp/target/scala-2.10/test-classes...
[success] Total time: 112 s, completed 24 juin 2014 17:53:06

и все... Тесты не запускаются. Если я попытаюсь запустить testOnly, он не будет найден.

Кроме того, даже если я не меняю ни один файл, каждый раз, когда я пытаюсь протестировать свое приложение, исходный код перекомпилируется. В Play 2.2 такого не было.

У меня даже нет больше журналов, чтобы показать. Когда я пытаюсь протестировать с помощью activator ui, у меня появляется больше журналов, но тест тоже не запускается.

Если я вручную удалю папки project/project, project/target и target и запущу команду activator test, я получу следующие ошибки для каждого тестового класса:

[error] Execution of test functional.actor.UserEditInformationTest failed: java.lang.ClassNotFoundException: functional.actor.UserEditInformationTest
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[error]     at java.security.AccessController.doPrivileged(Native Method)
[error]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[error]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[error]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
[error]     at com.novocode.junit.JUnitRunner$1.execute(JUnitRunner.java:120)
[error]     at sbt.ForkMain$Run$2.call(ForkMain.java:294)
[error]     at sbt.ForkMain$Run$2.call(ForkMain.java:284)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[error]     at java.lang.Thread.run(Thread.java:744)
[info] functional.actor.UserEditInformationTest
[info] ! functional.actor.UserEditInformationTest
[error] sbt.ForkMain$ForkError: functional.actor.UserEditInformationTest
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[error]     at java.security.AccessController.doPrivileged(Native Method)
[error]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[error]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[error]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

Как я могу решить проблему?

ИЗМЕНИТЬ Мой build.sbt файл:

name := "myapp"

version := "1.0.0"

scalaVersion := "2.10.4"

offline := true

// Play Core dependencies
libraryDependencies ++= Seq(
    javaJdbc,
    javaEbean,
    cache
)

// Specific dependencies
libraryDependencies ++= Seq(
    ...
)

lazy val root = (project in file(".")).enablePlugins(PlayJava)

jacoco.settings

parallelExecution in jacoco.Config := false

fork in Test := true

javaOptions in Test += "-Dconfig.file=conf/application.test.conf"

testOptions in jacoco.Config += Tests.Setup( () => System.setProperty("config.file", "conf/application.test.conf") )

person c4k    schedule 24.06.2014    source источник
comment
Не могли бы вы добавить пример тестового источника и определение вашей сборки?   -  person lpiepiora    schedule 24.06.2014
comment
Знаете ли вы, как я могу экспортировать полный журнал Activator UI?   -  person c4k    schedule 24.06.2014
comment
Нет, но вы должны иметь возможность запустить activator, что должно дать вам консоль, а затем ввести там test, а затем ввести last для получения подробных журналов.   -  person lpiepiora    schedule 24.06.2014
comment
Похоже, JUnit выполняется — см. строку с com.novocode.junit.JUnitRunner$1.execute(JUnitRunner.java:120). У вас есть тесты JUnit? Какая у вас конфигурация сборки? Не могли бы вы воспроизвести его с меньшим приложением?   -  person Jacek Laskowski    schedule 25.06.2014
comment
Да, я пытался создать меньшее приложение, и у меня нет проблем. Но мой проект больше, я думаю, что процесс компиляции нестабилен с большим количеством классов для компиляции. Я обновил свой вопрос с помощью файла build.sbt   -  person c4k    schedule 25.06.2014


Ответы (2)


У меня возникла та же проблема при обновлении приложения с Play 2.2.1 до 2.3.7. Почему-то кажется, что Eclipse мешает. Мое личное решение - выйти из Eclipse и, в конечном итоге, выйти из консоли активатора. Затем я бегу

 activator clean
 activator cleanFiles

потом

 activator test 

or

 activator testOnly <package>.<testClass>

Иногда не получается с первого раза. Когда наконец активатор находит (и запускает) тесты, то все работает гладко, и я снова могу включить консоль активатора и Eclipse.

Я надеюсь, это поможет...

Обновить

Каждый раз, когда я пишу новый тестовый класс, testOnly не находит его. Мне нужно сначала запустить комбинацию clean - cleanFiles, чтобы testOnly нашел ее (в этом случае нет необходимости отключать Eclipse).

person davide    schedule 13.02.2015

Выпущена версия Play 2.3.1: https://groups.google.com/forum/#!topic/play-framework/kz3iaBbPIwA

Я обновил свое приложение, и теперь все работает. Я могу выполнять свои тесты так часто, как хочу, и они работают.

person c4k    schedule 25.06.2014