Для выполнения автоматических тестов пользовательского интерфейса я запускаю тесты на внешней облачной службе, которая требует загрузки нашего набора тестов (для целей этого вопроса, пожалуйста, примите во внимание их подход).
Я все еще хочу, чтобы этот процесс был инкапсулирован в бегун JUnit, чтобы он соответствовал прогонам, использующим различные облачные сервисы или локальное выполнение.Я выполняю свои тесты с Maven
mvn clean install -Dtest=TestRunner -Dproperties=/path/to/settings.file
и хочу, чтобы этот поток был согласованным независимо от того, какой провайдер тестов используется.
Обходной путь, который я нашел, - запускать подобные тесты на моем локальном компьютере :
@Override
public void run(RunNotifier notifier) {
if (someCondition) {
new DelegateRunner().run(notifier);
} else {
super.run(notifier);
}
}
Затем DelegateRunner
вызывает стороннюю службу, которая запускает тесты в облаке .Как я могу отобразить результаты, которые я получаю от этого сервиса (я могу запросить их API) обратно к моему локальному выполнению JUnit?
Класс RunNotifier
предлагает методы типа fireTestFinished
или fireTestFailure
, но яне знаете, как строить объекты (Result
, Description
, Failure
), эти методы принимают в качестве параметров.Я подозреваю, что мне нужно использовать тестовых слушателей, но я не могу выяснить детали.
В более широком смысле, каковы мои варианты для создания результатов теста JUnit, когда реальные тесты выполняются на удаленной машинеили даже не выполняются как тесты JUnit?Это случай использования, с которым кто-то сталкивался раньше.Это может быть немного экзотично, но я не думаю, что я тоже первый.
Для начала я просто хочу предоставить двоичный результат - тесты пройдены или хотя бы один тест не пройден - таким образом, чтобыне нарушает интеграцию JUnit (например, плагин Maven surefire).
Прямо сейчас я получаю:
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 501.287 sec
и
No tests were executed! (Set -DfailIfNoTests=false to ignore this error.)
Как я могу потерпеть неудачусборка в случае сбоя теста и передачи его в противном случае (с количеством тестов, равным 1)?Я могу придумать несколько хакерских способов, но я уверен, что есть правильный.