Объявлять тесты для запуска без компиляции исходных текстов

#gradle

#gradle

Вопрос:

Рассмотрим такую ситуацию: есть большой проект, компиляция которого занимает огромное время, и у меня возникают артефакты в виде отдельных файлов (jar).

Я хочу запустить модульные тесты в этом проекте без компиляции и обработки самого проекта, поэтому мне нужно удалить зависимость от задачи, но этой задачи нет в списке задач. compileJava dependsOn test

dependsOn свойство test task содержит только некоторые [file collection] , и если я печатаю это FileCollection.files , я получаю список файлов и каталогов, которые включают .../build/classes/main . Я думаю, что после удаления этой записи я добьюсь успеха в удалении зависимости от compileJava (как я понял, .../build/classes/main это просто результат запуска compileJava и именно поэтому compileJava появился). Но я просто не понимаю, как удалить эту запись.

Кстати, в этом случае нет проблем с добавлением этого jar в classpath, так что это не проблема.

Я использую Gradle 1.8. Спасибо.

Комментарии:

1. Не знаете, как это будет хорошо работать? Если вы не скомпилируете исходные тексты перед выполнением тестов, будут устаревшие данные. Насколько тесты будут надежными?

2. @Opal Случай (я думаю) четко объяснен в сообщении: просто учтите, что этот jar загружен из локальной сети, и мне нужно запустить модульные тесты на нем.

Ответ №1:

compileJava будет обновляться, если ничего не изменилось и jar не зависит от test . Если вы все же хотите добавить возможность запуска тестов для загруженного Jar, объявите другую Test задачу. (Перенастройка test.classpath также должна работать, но кажется менее желательной.)

Комментарии:

1. В этом случае test в существующем проекте (фактически, в нескольких проектах) есть много уже настроенных задач, поэтому я хочу использовать их повторно, а не добавлять новые Test задачи. Как вы думаете, почему перенастройка classpath решит проблему? Вызывает ли это некоторое изменение наборов исходных текстов?

2. java Плагин не настраивает никаких явных зависимостей задач для Test задач. Вместо этого зависимости задач выводятся из входных данных, таких как classpath . Вместо перенастройки test.classpath вы также можете подумать о перенастройке sourceSets.test.compileClasspath или sourceSets.test.runtimeClasspath .

3.Хм, я только что попытался удалить зависимость с test.classpath = test.classpath.filter { file -> !file.absolutePath.contains('main') } помощью и не добился успеха, потому что внезапно compileTestJava был удален из test зависимости, почему это может быть?