Передача параметров объекта для методов TestNG?
-
19-09-2019 - |
Вопрос
Вот моя ситуация.
Перед запуском моих тестов в beforesuite я создаю экземпляр группы "объектов среды", Которые создаются на основе моего файла конфигурации среды.Именно мои тесты на самом деле будут использовать эти объекты среды.Проблема в том, как я могу передать их на тесты.
Вашим первым побуждением может быть использование поставщика данных, который передаст правильные объекты для тестирования.Проблема в том, что поставщик данных должен знать, как ссылаться на правильные объекты, а затем передавать их.В нынешнем виде на объекты среды можно ссылаться только по имени (string -> object).
Мой другой вариант - передать тестовому методу строку, которая ссылается на правильные объекты.Но здесь возникает та же проблема, что и вышеописанная.
Оба этих варианта создают множество зависимостей и проблем.Я также должен сделать множество предположений о типе, к которому относится ключ.
Большая часть этой проблемы проистекает из того факта, что я злоупотребляю TestNG.Что мне действительно нужно, так это мой собственный контроллер, который может создавать экземпляр моего тестового объекта при передаче соответствующих объектов среды.
Я изучал интерфейс TestRunner от testng, но я не уверен, сработает ли это.
Любая помощь приветствуется.Эрик
Решение
Почему бы не использовать сочетание @Factory и @dataProvider?
Фабрика будет отвечать за создание ваших тестовых экземпляров и передачу им правильных параметров:либо строки (в этом случае поставщик данных затем может превратить эти строки в объекты), либо непосредственно объекты, и в этом случае ваши тесты могут использовать эти значения напрямую.
Не стесняйтесь публиковать какой-нибудь код, если это не поможет вам решить вашу проблему.
-- Седрик
Другие советы
У меня была похожая ситуация, и вместо этого я использовал свойства Java.
Вы можете использовать это свойство в своем коде так и передайте переменные в вашу JVM с помощью -Dmyproperty.value=hello.Я использовал его для таких вещей, как путь к среде, URL-адрес службы, время ожидания и т. д.