2014-11-13 2 views
1

Мне нужно запускать тесты проекта как локально, так и автоматически на сервере TeamCity.Создать копию Задачи теста Gradle

Локальное выполнение теста должно использовать подключение к локальной базе данных, а при запуске на TeamCity тесты должны использовать удаленное соединение с базой данных.

Поэтому мне нужно рассказать свои тесты, когда использовать локальное соединение и когда использовать удаленный и пропущенный URL, имя пользователя и пароль в этом случае.

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

systemProperty 'some.prop', 'value' 

Вопрос заключается в том, как я могу создать стандартную тестовую задачу для локального тестового прогона, который не будет проходить никаких свойств, и пользовательские тестовое задание, который будет установлен свойства системы перед запуском?

Я пытался что-то вроде

task teamCityTest(type : Test) { 
    scanForTestClasses = false 
    includes = ['**/*Test.class'] 
    systemProperty 'some.prop', 'value' 
} 

, но он не смог с NPE, это означает, что я делаю что-то неправильно.

ответ

1

подход отлично (вы можете использовать плагин Java-test задачу для выполнения тестов на местном уровне), но вам придется настроить дополнительные свойства для teamCityTest, таких как classpath = configurations.testRuntime (или даже classpath = test.classpath). Полный пример см. В разделе samples/java/withIntegrationTests в распределении gradle-all.

+0

Теперь я погружаюсь в этот пример, пойдем время, чтобы понять – AdamSkywalker

+0

Все, что имеет значение в вашем случае, - это то, как настроить задачу «Тест» (в частности, какие свойства необходимо установить). Так как задача 'teamCityTest' должна быть сконфигурирована идентично задаче' test', за исключением системного свойства, вы можете скопировать значения свойств из задачи 'test' (' foo = test.foo'). –

+0

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

Смежные вопросы