Как правильно создать проект с тестами в Intellij idea с использованием maven, java, selenium, testng

Maven Projects-> Lifecycle-> package (двойной клик)

Я не приведу пример потому что апликейшены с тестами никто не делает. Если нужно иметь 3 пачки разных тестов, то проставь им группы :

@Test(dataProvider = "Create Experiment with selected files", dataProviderClass = ExperimentDataProvider.class, groups = {"test"})

Сделай тест сьюты и в зависимости от конфигов запускай уже конкретные группы.

В тестах мейн класса нет. Хотя конечно ты можешь взять все свои тесты, создать меин класс в папке src->main-> java. Но нормальные люди так не делают.

Я делал так :joy::sweat_smile::zipper_mouth_face:

А чего перестал?:smile:

2 лайка

Не то, чтобы перестал. На каких-то проектах эти рудименты сохранились. Просто сейчас не стоит задачи максимально разгонять скорость тестов или изолированных запусков из alm систем.

Хочу убедится что мы правильно друг друга понимаем.

  • да это проект в котором есть только тесты;
  • все эти классы (и тесты) должны быть в исполняемом файле;
  • нужна возможность задавать приоритет тестам до запуска исполняемого файла или во время его работы;
    Проект большой и для регрессионного тестирования это необходимо.

Ты бы не мог пояснить более подробно какую функцию в приведённом тобой примере выполняет dataProvider и dataProviderClass? Дело в том что я использую его для передачи входящих параметров в тест… и как бы другого назначения не встречала. Например как описано здесь TestNG - Parameterized Test.

  • все эти классы (и тесты) должны быть в исполняемом файле;
    и
  • нужна возможность задавать приоритет тестам до запуска исполняемого файла или во время его работы;

Честно говоря я с таким не сталкивался что бы менять приоритеты уже внутри исполняемого файла. Т.к это уже получается не тесты а программы что ли.
dataProvider не несёт никакой смысловой нагрузки в данном примере, просто показал как будет выглядеть строчка если ты его используешь. Но опять же если это будет исполняемый файл, а не тест то группы тут уже не помогут.

Если не секрет зачем именно исполняемые файлы?

Программисты люди загадочные… На тестовый заливаем одно, а в продакшен отдаём другое… Тесты написаны так что они сами делают какие-то подготовительные шаги @BeforeTest (а случае с авторизацией это будит регистрация), выполняется тест и @AfterTest подчищаем за собой (например это удаление зарегистрированного пользователя с БД) Вообщем нужно что бы они выполнялись после внесения изменений программистами (деплоя), а по тому как честных людей мало это должно происходить само собой (выполнение тестов). Очень грустно когда клиенты говорят нам о том что апа упала или не работает и т.д.
Я имела ввиду ни в самом джарнике что-то менять во время выполнения, а файл с которого джарник читает какие тесты и в каком порядке ему выполнять.

Так и всё же зачем джарник? Почему бы не запускать mvn test -Dgroups=auth,register ?

Какой это даст результат?

Не нужно собирать джарник каждый раз, конфигами можно менять параметры запуска тестов . А главное - тесты будут тестами а не апликейшенами.

А как конфигами менять параметры запуска тестов?
Допустим такой вариант устроит. Я смогу эти тесты положить на виртуалку и в бесконечном цикле их выполнять? Если да то подскажи пожалуйста как это сделать. То есть что мне туда(на виртуалку) закинуть и как запустить.

Про конфиги лучше нагуглите т.к это долго и нудно расписывать.

В идеале ставите дженкинс или на крайняк windows scheduler можете запускать тесты по графику. Закидываете просто папку с проектом. Т.к у тебя мавен проект то все тесты можно запустить через консоль командой mvn test ( в папке с проектом) или сделать все нужные настройки в дженкинсе.
У меня проект лежит на битбакете. Дженкинс сам тянет код из репозитория, мавеном компилит и запускает.

А можешь поподробнее про запуск из alm систем?
на данный момент вопрос не стоит, но интересно для общего развития.

Наверное, это стоит вырезать в отдельную ветку

Да, лучше вынести в отдельную. А по сути там ничего особенного. Всё больше упирается в то, какая ALM система используется конкретно у вас на проекте и для чего вам из неё делать запуски (подсказка: обычно для красивых отчетов начальству :slight_smile:)
Какой инструмент лучше использовать в качестве тест-менеджемент тула

1 лайк

Могу посоветовать следующее:

  • почитайте как следует про Maven, TestNG и т.п. (т.е. не гуглите ответы на конкретные вопросы, а постарайтесь ознакомиться с инструментами);
  • почитайте про Jenkins, он как раз Вам бы подошел для регулярного запуска тестов
1 лайк

Опешите пожалуйста как вы в своих проектах используете автоматизированное тестирование. Единственное просьба придерживаться какого-то плана изложения, что бы не путать друг друга и по итогу получать “картинку” того как и в какой комбинации люди используют инструменты, фреймворки, библиотеки и т.д., как управляют наборами тестов и какие результаты получают в итоге.

Всё пропало, школьники добрались и сюда.

В таком случае вам ничего не стоит разъяснить “школьникам” какие инструменты и фреймворки использовать дабы получить авто-тесты для регресионного тестирования. Можно с примерами, как для школьников. Буду очень признательна.

Для ваших целей testNG + gradle
в тест нг создаёте раннеры хмл с параметрами (которые будет запускать одни и теже тесты с разными параметрамиб вариантами тестов и т.д.)
примерно так:

> <suite name="Regression suite" verbose="5" parallel="methods">
> <!--<suite name="Default Suite" verbose="10" parallel="methods" data-provider-thread-count="1">-->
>     <parameter name="stage" value="UAT"/>
>     <parameter name="country" value="UK"/>
>     <!--<parameter name="path_generated" value="src/test/resources/generated/regression/"/>-->
>     <parameter name="path_generated" value="src/test/resources/runnersTestNg/"/>
>     <parameter name="path_report" value="src/test/resources/generated/regression/"/>

>     <test name="Test">
>         <classes>
>             <class name="">
>                 <methods>
>                     <include name=""/>
>                 </methods>
>             </class>
>         </classes>
>     </test>
>     <!-- Test -->
> </suite> <!-- Default Suite -->

А в гредле таски типа

task имя_таска (type: Test) {
    testLogging.showStandardStreams = true

    useTestNG {
        useDefaultListeners false
        ignoreFailures false
        suites 'src/test/resources/runnersTestNg/название_раннера.xml'
    }
}

ну и запускайте где хотите - локально \ CI