#java #юнит_тесты #junit
Тестирую веб-сайт с использованием Selenium Webdriver (Firefox) и JUnit. В данный момент разные тест-кейсы работают с одним набором данных. Хочу разделить данные и реализацию, чтобы запускать одни и те же сценарии с разными данными. Пока что данные инциализируются в @Before, но я могу выделить их хоть в XML, хоть в Properties. С этим затруднений нет. В чем проблема: не представляю, как заставить юнит-тесты запускаться многократно, используя различные данные? Я мог бы легко это сделать, отказавшись от использования JUnit. Просто вручную запускать методы и вручную же перебирать и скармливать им данные. Но это страшный велосипед и я не хочу терять преимуществ JUnit (таких, например, как автозапуск через Maven, красивое логирование, легкий запуск одного метода из тест-комплекта либо всего комплекта и т.д). public class TestSuite { /** * Входные данные — строки и числа * */ String searchString; String firmID; String geoID; private DGDriver driver; //extends FirefoxDriver @Before public void setUp() throws Exception { driver = new DGDriver(); driver.manage().timeouts().implicitlyWait(1000, TimeUnit.SECONDS); /** Сейчас данные инициализируются так */ searchString = "главный вокзал"; firmID = "141265769369926"; geoID = "141373143526113"; } @Test public void testCase1 { /* Тут вызываются методы, использующие данные. Думаю, по именам понятно, как они их используют */ driver.homepage(); driver.searchFor(searchString); driver.searchResults.clickItem(firmID); driver.firmCard.clickAddress(); ... } ... }
Ответы
Ответ 1
Решил следующим образом: В JUnit есть аннотации @Parametrized /** * Обязательна вот такая аннотация класса: */ @RunWith(Parameterized.class) public class LeafletMarkerTests { /** * значение аннотации value указывает на номер параметра в массиве */ @Parameterized.Parameter(0) public String searchString; @Parameterized.Parameter(1) public String firmID; @Parameterized.Parameter(2) public String geoID; @Parameterized.Parameter(3) public int expectedTransformX; @Parameterized.Parameter(4) public int expectedTransformY; @Parameterized.Parameter(5) public int expectedTransformZ; Vector3d expectedCzarTransform; // разные другие переменные /** * можно задать названия датасетов, чтобы было понятнее, на каком тест зафейлился */ @Parameterized.Parameters(name = "{index}: {0}") public static Collection
Комментариев нет:
Отправить комментарий