У вас есть класс RunMe
. Как следует из названия, он управляется другим классом. Давайте поступим через RunMe.run()
.Правильная конструкция для определенных методов
RunMe
имеет личную переменную с данными, которые он использует для запуска различных тестов, позволяет звонить ist data
. Предположим, что эти данные инициализированы RunMe.initialize()
.
После этого в методе run()
первый тест запускается со значениями по умолчанию, установленными функцией initialize
для data
. Назовем этот тестовый метод testWithDefaultValues
.
Теперь мы хотим заполнить наши data
некоторыми пользовательскими данными. Предположим, мы делаем это, используя fillData
.
Затем мы хотим выполнить другое испытание, используя наши недавно заполненные данные. Назовем этот тест testWithFilledData
.
Наш вводного метод в этой точке будет выглядеть примерно так
public void run() {
initialize();
testWithDefaultValues();
fillData();
testWithFilledData();
}
Вы можете увидеть, как akward этот код выглядит? Он выглядит И чувствует себя не так. Вещь, которая сразу приходит мне в голову: единственная причина, по которой testWithFilledData()
, а также testWithDefaultValues()
фактически делает то, что предполагает это имя, вызвано порядком, в котором эти функции вызывают в run
. Это должно быть неправильно.
Итак, вместо этого я должен устранить initialize
и fillData
и выполнить то, что эти функции выполняют в соответствующей тестовой функции?
Что делать, если вы считаете, что многие другие тестовые функции будут существовать, каждый из которых тестирует другой набор данных, все из которых должны быть заполнены вручную (data.setField("fooField","fooValue);
).
Может ли кто-нибудь дать общую конструкцию или идею, в которой он объяснит, как он правильно разрешил данную задачу?
Прямо сейчас я действительно пытаюсь найти образец, который «чувствует себя хорошо» и правильно. То, что я делаю сейчас, должно быть ошибочным.
Редакция: Следует упомянуть, что тестовая функция не может быть общей. Для любых разных вариантов data
необходимо учитывать различные результаты.
Почему вы называете класс 'RunMe'? Что делают экземпляры класса? – immibis
Класс на самом деле не называется RunMe, это был просто пример. Это часть селен-тест-сюиты. Предполагается, что в другом классе будет выполняться целый ряд тестов Selenium-Tests (для всех логических процедур, существующих на веб-сайте). Каждый класс (такой как RunMe в этом примере) иллюстрирует такой тест. Таким образом, класс не тестирует себя, класс IS является тестом. – Mercious