Как включить отладку моей тестовой задачи JUnit через Gradle
У меня возникают проблемы, когда я пытаюсь запустить мой тест JUnit с помощью тестовой задачи gradle. В то время как я запускаю тест в eclipse непосредственно с помощью теста Run As → JUnit, все в порядке, тест преуспевает. Но через тестовую задачу тест всегда терпит неудачу. Вероятно, некоторые проблемы с кодировкой моего ресурса txt файла. Поэтому я бы хотел включить debug во время запуска теста с помощью gradle
в build.gradle, моя тестовая задача теперь выглядит следующим образом:
test {
tasks.withType(Compile) {
options.encoding = 'UTF-8'
}
}
Итак, что я должен сделать для включения debug? Я запускаю задачи gradle из панели gradle в Eclipse, а не из консоли. Спасибо!
Ответы
Ответ 1
Для тестирования отладки следует использовать следующий аргумент: --debug-jvm
Например: gradle test --debug-jvm
Gradle приостанавливает выполнение перед запуском тестов и ожидает подключения отладчика на порту 5005.
Для выполнения только определенных тестов см. http://www.gradle.org/docs/current/userguide/java_plugin.html#sec:java_test
Ответ 2
Как объясняется в 23.12. Test
в Gradle Руководство пользователя, выполнение gradle test -Dtest.single=MyTestClass -Dtest.debug
приостанавливает тестовую JVM при запуске и разрешает для подключения внешнего отладчика (например, отладчика Eclipse) на порт 5005.
Ответ 3
Полагая это здесь как --debug-jvm
, не работало для меня, я смог сделать это, установив:
org.gradle.daemon=true
org.gradle.jvmargs=... -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=10999
в
~/.gradle/gradle.properties
Но когда я подключаюсь к отладчику eclipse для проекта, ни одна точка останова, которую я установил компиляцию/триггер... Я подключен через отладчик, я вижу действие в представлении Debug, когда я запускаю gradle test
из командной строки, например, запускать/останавливать новые потоки, но не может получить контрольные точки для запуска, пытаясь разрешить это сейчас...
Fyi, чтобы остановить запуск deamon gradle --stop
ИЗМЕНИТЬ...
Оставив выше как ссылку, это сработало для запуска точек останова в тестах, я отключил деамон, поскольку я не мог заставить его работать правильно:
Использование направлений из этой статьи: http://blogs.steeplesoft.com/posts/2013/gradle-tip-attaching-a-debugger.html
test {
if (System.getProperty('DEBUG', 'false') == 'true') {
jvmArgs '-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=10999'
}
}
Выполняется через gradle test -DDEBUG=true