2013-03-04 2 views
9

Я настраиваю проект с использованием Play 2, и я уже могу отлаживать webapp, используя удаленную отладку eclipse. Хотя, я также хотел бы использовать точки останова на моих тестах. Кто-нибудь знает, как удаленная отладка тестирования модулей установки?Как отлаживать тесты с Play! 2.0

+2

ли эта помощь? http://stackoverflow.com/questions/10859064/how-to-debug-play-2-unit-test-for-server-side – Behe

+0

Нет, это не так. Я использую игру, а не типный стек. –

+0

Вы пробовали команду: 'play debug ~ test' – adis

ответ

11

Это происходит после того, как Play (SBT) разворачивает отдельную JVM для тестов без параметров, необходимых для удаленной отладки. У вас есть как минимум два варианта: отключить вилку новой JVM, передать дополнительные параметры JVM, используемые для тестов.

Чтобы отключить вилку, изменить Build.scala, добавить fork in (Test) := false см полный пример Build.scala ниже:

import sbt._ 
import play.Project._ 

object ApplicationBuild extends Build { 

    val appName   = "so1" 
    val appVersion  = "1.0-SNAPSHOT" 

    val appDependencies = Seq(
    // Add your project dependencies here, 
    javaCore, 
    javaJdbc, 
    javaEbean 
) 

    val main = play.Project(appName, appVersion, appDependencies).settings(
    // Add your own project settings here 
    Keys.fork in (Test) := false 
) 
} 

Чтобы передать дополнительные параметры, добавить Вы можете использовать этот код:

val main = play.Project(appName, appVersion, appDependencies).settings(
    Keys.javaOptions in (Test) += 
    "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998" 
) 

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

+0

Спасибо за ваш ответ. Я больше не использую игру, поэтому я не знаю, правильный ли этот ответ, и у меня нет времени попробовать. Если у него будет больше очков, я позже помету это как принятое. –

+2

Я могу подтвердить, что он работает (Play 2.1.0) – Skyr

+1

. Лучше всего предотвратить тест в fork, как описано [здесь] (http://stackoverflow.com/a/16742485/508064). Это позволяет использовать одно и то же соединение как для приложения, так и для теста, а соединение открыто во время запуска игровой консоли, поэтому вам не нужно повторно подключать отладчик. – roterl

0

я использую затмение или скорее Scala язь

вместо запуска «играть» я запустить эту команду «играть отлаживать» тогда играть будет печатать это сообщение:

Listening for transport dt_socket at address: 9999 

нормальный $ проворная для игры. затем введите эту команду «Выполнить»

от затмения, я установить контрольную точку и нажмите кнопку «Выполнить -> Debug Configurations ...» искать «Remote Java Application» на левом и нажмите кнопку «Запуск новой конфигурации» (маленькая иконка, вверху слева, выглядит как значок «нового документа»). порт по умолчанию будет 8000, измените его на 9999 и смените аппарат, скорее всего, вы будете использовать localhost. и нажмите кнопку [Отладка]

, который должен это сделать. просто загрузите нормальный http://localhost:9000 в свой браузер просто подождите, пока приложение попадет в точку останова.

+2

, это не очень помогает при отладке модульных тестов, но было бы полезным ответом, если бы это было для удаленной отладки игрового приложения – Stowelly

+0

, это помогло мне :) – JustGoscha

0

Отключив вилку и параллельную работу в тестовой среде, вы можете отлаживать тесты. Только вы должны добавить эти строки конец файла build.sbt:

parallelExecution in Test := false 
fork in Test := false 
Смежные вопросы