делайте итератор вокруг этого специального indtended-to-be-flexible теста руками
Извините, не понял о чем речь. Расшифруйте или дайте наводки на мануалы по теме.
Главное переопределить методы next, hasNext
Можете показать пример?
4 публикаций создано Azur (учитываются публикации только с 06 июня 2023)
Отправлено автор: Azur 10 января 2019 - 06:45 в Selenium - Functional Testing
делайте итератор вокруг этого специального indtended-to-be-flexible теста руками
Извините, не понял о чем речь. Расшифруйте или дайте наводки на мануалы по теме.
Главное переопределить методы next, hasNext
Можете показать пример?
Отправлено автор: Azur 06 января 2019 - 08:04 в Selenium - Functional Testing
@Azur опишите пожауйста ситуацию где надо изменять параметры именно из `@Before`
Я изучил как раз parameterized-tests и сделал аналогично. Во всех примерах используется готовая коллекция, которая не изменяется во время теста. Мне ее нужно менять.
Есть список проектов и ссылки на них на нескольких страницах, пользователи добавляют новые проекты, удаляют старые, список хоть и нечасто, но меняется, я обхожу все страницы и собираю ссылки или id с них в переменную. Внутри каждого проекта нужно выполнить тестовый сценарий, это и есть параметризированный тест, где параметром выступает например id проекта. Я хотел сбор ссылок включить в @BeforeClass, чтобы получать актуальный список перед тестированием.
Отправлено автор: Azur 04 января 2019 - 07:17 в Selenium - Functional Testing
похоже идет completely вразрез с первоосновами (и в testng тоже)
С удовольствием почитаю почему параметризация идет вразрез с первоосновами. Серьезно, я в java не настолько разбираюсь, чтобы понимать даже очевидные для многих вещи. Я понимаю, что использование юнит-фреймворка в функциональном тестировании это всегда компромиссы. Еще я понимаю, что TestNG в этом аспекте лучше, но в данный момент мне хочется реализовать параметризацию в Junit.
попробуйте держать в файле
Я уже думал об этом. Но ссылки, составляющие список параметров теста, могут меняться между прогонами, поэтому придется их записывать в файл заблаговременно. А в Junit нет четкого порядка выполнения тестов. Да и зависимости между тестами не комильфо. В крайнем случае будет использоваться старый список, который обновится в произвольном порядке между другими проверками, а значит для полной проверки тест придется запускать 2 раза. Этот вариант я оставил на потом.
Тем не менее, я все же нашел причину. Упростил до итератора:
@Parameterized.Parameters(name = "{index}:TestOf {0}") public static Iterable data() { return testvalues; }
Теперь testvalues это простой список. Но именно при работе со списком появилась другая странность. Тест с параметрами выполняется только по значениям, которые я инициализирую в самом начале тестового класса, если я список пополняю, то новые значения игнорируются. Вот как это выглядит:
List<String> testvalues = new ArrayList<String>(Arrays.asList("google.com","ya.ru","twitter.com"));
@BeforeClass public static void setup() throws Exception { ... testvalues.add("link1.ru"); testvalues.add("link2.ru"); testvalues.add("link3.ru"); ... }
В @Test я среди прочего вывожу в консоль testvalues, чтобы убедиться, что новые значения добавились в список. Но параметры теста их игнорируют, только 3 первоначальных значения используются, 3 теста запускается. Сам @BeforeClass работает правильно, ведь там инициализируется драйвер и прочее, а порядок легко проверить. Я не понимаю в чем дело, я не нашел ни в одном мануале по JUnit даже намека на происходящее.
Отправлено автор: Azur 28 декабря 2018 - 10:26 в Selenium - Functional Testing
Добрый день. Пытаюсь сделать параметризированные тесты на Webdriver 3 / JUnit4, пока локально в Idea. Начинаю с простого, обход по ссылкам, которые предварительно собраны в виде URL в простой список. Этот список я не могу использовать в качестве параметра. Насколько я понимаю, параметрами могут выступать только объекты.
Например я могу объявить объект заранее
Object[] testvalues = new Object[]{"google.com","ya.ru","twitter.com"};
И тогда в тесте он отработает правильно
@RunWith(Parameterized.class) public class TestParam { @Parameterized.Parameter public String domainName; @Parameterized.Parameters(name = "{index}:TestOf {0}") public static Object[] data() { return testvalues; } @Test public void paramTest() { System.out.println(domainName); } }
Фокусы начинаются когда я пытаюсь использовать список ссылок.
1. Я могу сделать объект через toArray()
2. Я могу сделать объект через stream().toArray(n -> new String[n])
3. Я могу сделать объект через stream().toArray(String[]::new)
4. Я не могу добавлять ссылки сразу в объект, потому что он имеет фиксированный размер
В результате, если я использую именно сконвертированный объект, то тестовый класс выполняется успешно без параметров, ничего не делая. Я проверял, что на выходе получаются именно объекты с нужным содержимым. Подскажите пожалуйста, где у меня ошибка.
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: Software-Testing.Ru