Я хочу создать структуру для своего нового проекта, и я намерен построить его с помощью Gradle. Я уже знаю, что если я размещаю источники и тесты в одном проекте, то плагины, такие как MoreUnit, будут легко справляться с этим и создавать тесты для моих классов, где я их хочу.1 Проект Eclipse, 2 артефакта с Gradle
Однако он создает некоторые неудобные проблемы с зависимостями, когда мой проект состоит из нескольких подпроектов в зависимости друг от друга - если быть точным, когда я хочу использовать некоторый общий код в тестах в проекте A, а затем повторно использовать его в тестах в BI проекта, сделать некоторые обходные пути, как
project(':B') {
// ...
dependencies {
// ...
if (noEclipseTask) {
testCompile project(':A').sourceSets.test.output
}
}
}
иногда не были какие-то проблемы оценки, чтобы другой хак должен был быть введен:
project(':B') {
evaluationDependsOn(':A')
}
Расщепление это в 2 отдельных проектов, избавившись от этого вопроса, но тогда MoreUnit больше не было в состоянии отслеживать, где он должен создавать новые тестовые файлы, и отмечать, какие методы были протестированы. Я не нашел ничего в конфигурации MoreUnit, которая позволила бы мне исправить это, поэтому я пытаюсь исправить это со стороны Gradle.
Можем ли мы договориться, чтобы у меня было несколько подпроектов, источники и тесты были устроены как maven (project/src/java
, project/test/java
), но тесты и источники создадут отдельные артефакты? Если я решаю неправильную проблему, тогда как я должен решить правильный?
Спасибо за ответ! У меня есть некоторые сомнения, которые я хотел бы решить. Обычно вы имеете в виду тестовый код, который я хочу разделить между тестовыми проектами? Должно ли ваше решение применяться к подходу 1-project-with-src-and-test или к двум отдельным проектам? Должен ли первый фрагмент кода размещаться на уровне корневого проекта или в рамках проекта сообщества? –
Весь приведенный выше код может быть применен к общему проекту, который генерирует '' 'common-v1.0.jar''' и' '' common-testenv-v1.0.jar'''. Оба могут использоваться для их целей ... –