При написании кода, который взаимодействует с внешними ресурсами (например, с использованием веб-службы или другой сетевой операции), я часто структурирую классы, чтобы их также можно «обрезать» с помощью файла или какой-либо другой способ ввода. Таким образом, я в конечном итоге использую окутанную реализацию для тестирования других частей системы, а затем один или два теста, которые специально проверяют вызов веб-службы.Исключить некоторые тесты JUnit из автоматизированного набора тестов
Проблема в том, что я не хочу обращаться к этим внешним сервисам от Jenkins или когда я запускаю все тесты для моего проекта (например, «тест градиента»). Некоторые из услуг имеют побочные эффекты или могут быть недоступны для всех разработчиков.
Сейчас я просто раскомментирую, а затем повторно прокомментирую аннотацию @Test по этим конкретным методам тестирования, чтобы включить и отключить их. Включите его, запустите его вручную, чтобы проверить его, а затем забудьте прокомментировать его снова.
// Uncomment to test external service manually
//@Test
public void testSomethingExternal() {
Есть ли лучший способ сделать это?
EDIT: Для ручного модульного тестирования я использую Eclipse и могу просто щелкнуть правой кнопкой мыши по методу тестирования и выполнить Run As -> JUnit test. Но это не работает без (без комментариев) аннотации.
Неясно, хотите ли вы автоматизированный «профиль» модульных тестов, которые вы можете переключаться между ними или просто более простым способом вручную переключать их во время разработки. – chrylis
@chrylis То, что я пытался сделать изначально, это запустить индивидуальный тест. Однако идея создания отдельного профиля для этих типов тестов, вероятно, является лучшим подходом. Хотя мне все же хотелось бы иметь возможность запускать некоторые тесты отдельно (в тех случаях, когда есть побочные эффекты, например, которые я стараюсь избегать, но иногда это неизбежно). –