Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как указать точку входа для тестов в JUnit?

maven
java
junit
Теги: #<Tag:0x00007f7b64f9bc80> #<Tag:0x00007f7b64f9baf0> #<Tag:0x00007f7b64f9b938>

(Руслан Лизогуб) #1

Добрый день.
Проблема в том что для выполнения тестов в нужном мне порядке я использовал дополнительный клас:

@RunWith(Suite.class)
@SuiteClasses({ Test1ExitWitchActivatePage.class, Test2ViewAListOfTheInformation.class, Test3Autorization.class })

public class TestSuite {

	public static void main(String[] args) {

	}

}

Соответственно имеются три тестовых класса с анотацией @Test.
Проблема в том что при выполнении команды mvn test выполняется два прогона тестов, как я понял мавен просто ищет анотации и запускает их.
Как сделать так чтобы запускался сугубо класс TestSuite, а тесты с анотацией @Test не запускались повторно?
Спасибо)


(Александр Таранков) #2

Есть вероятность, что ты решаешь проблему, которую специально выдумал. А именно:

  1. зачем-то понадобилось запустить тесты в нужном порядке
  2. для этого ты не стал использовать имеющиеся во фреймворке средства, а решил прибить сбоку ржавыми гвоздями своё решение
  3. реализация работает не так как надо и ты ищешь решение именно этой проблемы, а не двух предыдущих

Для начала стоит понять почему возникла потребность запускать тесты в определенной последовательности. Зачастую это неверный ход и делать так не надо. Это считается bad practice. Стоит серьезно подумать и взвесить все за и против, прежде чем делать тесты зависимыми, понять причины, почему нужно именно так и почему нельзя по-другому.

Если по-другому нельзя и ты осознанно ступил на этот скользкий путь, то у JUnit есть готовые средства для этого, например, MethodSorters. Не подходит?


(Руслан Лизогуб) #3

Потребность определенного порядка возникла, так как я решил разделить все стадии, отдельно авторизация, регистрация и прочее. И чтобы каждый раз не регистрировать приложение для прогона теста я решил сначала провести тесты для авторизации и регистрации продукта. Потом все остальные, так как функционал не доступен до момента регистрации. Конечно же я открыт к критике и предложениям:)
MethodSorters еще не разсматривал, сейчас буду гуглить, тот пример который я использывал это первое что удалось нагуглить.


(Александр Таранков) #4

MethodSorters может и не подойти. Как я понял. Он подходит для упорядочивания запуска тестов внутри класса. Тебе же скорее надо зависимость тестов по функционалу. Поищи в этом направлении - как в JUnit указать зависимость тестов


(Виктор) #5

Почему бы вам не попробовать группировать тесты по категориям?


(Руслан Лизогуб) #6

Как раз читаю статью по категориям, спасибо:))
http://internetka.in.ua/group-junit-category/


(Руслан Лизогуб) #7

Вопрос решен, с помощью категорий в junit и плагинчика к мавену. Запускаются только тесты из категорий, дублирования запуска не наблюдается. Всем спасибо)