2012-02-21 2 views
1

Это вопрос для JUnit в целом, но он включает в себя автоматизацию браузера с Selenium WebDriver.Как получить тест JUnit (WebDriver) для повторного запуска несколько раз?

У меня есть JUnit4 TestSuite, который запускает один тестовый класс JUnit. В моем тестовом классе JUnit есть 10 методов тестирования, которые заполняют веб-страницу. В этом тестовом классе JUnit у меня есть объект List, который содержит данные для тестов. Я могу в настоящее время тест-драйв блока с помощью обращающегося объекта List следующим образом:

// all data for my tests can be grabbed using the get(0) method 
testListObject.getPersonEntity.get(0).getName(); 

Мой вопрос для пользователей StackOverflow является:

Как реорганизовать мой JUnit тест так, что он будет проходить через несколько тестов в моем объекте список?

Другими словами:

  1. Можно ли создать метод, который перебирает список и каким-то образом получает все методы испытаний, чтобы выстрелить каждый раз в цикле? Будет ли это иметь смысл? Затем единичный тест не будет завершен каждый раз, когда он заполняет страницу, но вместо этого он заполняет страницу для каждого тестового примера в списке.

  2. Или, должен ли я переместить тестовый список на объект TestSuite и каким-то образом вызвать класс тестирования Unit несколько раз? Если да, то как?

Я не уверен, как это сделать, не очень хорошо знакомы с тем, как работает JUitit. Другими словами, не зная основы того, как срабатывают методы «теста», я не знаю, как правильно запустить тест JUnit несколько раз. Еще один способ спросить: как я могу заставить класс TestSuite вызывать единый тестовый класс несколько раз, каждый раз с другим аргументом testentity (из списка), который управляет тестом?

ответ

2

См. Parameterized и Parameters в JUnit. Я думаю, они обеспечивают то, что вам нужно. Для получения дополнительной помощи см. this past SO link.. Вам просто нужно использовать @RunWith(Parameterized.class), предоставить метод, аннотированный с помощью Parameterized.Parameters, который возвращает данные, необходимые для каждого запуска (в списке, массиве или некоторой коллекции), а самое странное - создание конструктора для test class, который принимает тип ввода ваших итерационных данных.

+0

Спасибо. Да, похоже, что конструктор, а также метод, который получает список параметров, вызываются отражением и arenot/не должны вызываться напрямую. Сначала это сбивало с толку. – djangofan

Смежные вопросы