делайте итератор вокруг этого специального indtended-to-be-flexible теста руками
Извините, не понял о чем речь. Расшифруйте или дайте наводки на мануалы по теме.
Главное переопределить методы next, hasNext
Можете показать пример?
Azur еще не добавил друзей
10 января 2019 - 06:45
делайте итератор вокруг этого специального indtended-to-be-flexible теста руками
Извините, не понял о чем речь. Расшифруйте или дайте наводки на мануалы по теме.
Главное переопределить методы next, hasNext
Можете показать пример?
06 января 2019 - 08:04
@Azur опишите пожауйста ситуацию где надо изменять параметры именно из `@Before`
Я изучил как раз parameterized-tests и сделал аналогично. Во всех примерах используется готовая коллекция, которая не изменяется во время теста. Мне ее нужно менять.
Есть список проектов и ссылки на них на нескольких страницах, пользователи добавляют новые проекты, удаляют старые, список хоть и нечасто, но меняется, я обхожу все страницы и собираю ссылки или id с них в переменную. Внутри каждого проекта нужно выполнить тестовый сценарий, это и есть параметризированный тест, где параметром выступает например id проекта. Я хотел сбор ссылок включить в @BeforeClass, чтобы получать актуальный список перед тестированием.
04 января 2019 - 07:17
похоже идет 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 даже намека на происходящее.
Community Forum Software by IP.Board Русификация от IBResource
Лицензия зарегистрирована на: Software-Testing.Ru