Как я могу отфильтровать пропущенные тесты во время обнаружения в junit jupiter?

У нас есть внутренний инструмент, который распределяет сотни тысяч тестов среди облачных рабочих. Я написал инструмент, который обнаруживает все тесты, которые необходимо запустить с помощью LauncherDiscoverRequest, и все работает. Однако некоторые из наших тестов (и тестовых классов) имеют аннотации @Disabled или @Ignore. Эти тесты по-прежнему обнаруживаются и назначаются тестовым рабочим, но, конечно, тесты ничего не делают, поэтому они просто тратят ресурсы впустую. Я хотел бы идентифицировать и фильтровать эти тесты во время обнаружения, чтобы они не были включены в TestPlan.

Я нашел JupiterTestDescriptor::shouldBeSkipped(JupiterEngineExecutionContext), но не вижу хорошего способа вызвать его, например, из PostDiscoveryFilter.

Я могу использовать пользовательский PostDiscoveryFilter для идентификации источника каждого теста, а затем использовать отражение, чтобы определить, аннотирован ли метод или класс, но это хакерство и не охватывает общий случай: есть другие способы отключить тесты.

Как лучше всего отфильтровать пропущенные тесты во время обнаружения?


person pburka    schedule 26.06.2020    source источник


Ответы (1)


Вы не можете отфильтровать отключенные тесты, так как отключенные тесты отображаются как таковые. Что вы можете сделать, так это ввести свою собственную аннотацию, например @MyDisabled, которая имеет метааннотации @Disabled и @Tag(“mytag“). Таким образом, тесты отключены, и вы можете отфильтровать тег.

person johanneslink    schedule 26.06.2020