Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Не могу использовать списки с параметризацией в JUnit4



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Не могу использовать списки с параметризацией в JUnit4
2018-12-28 13:26

Добрый день. Пытаюсь сделать параметризированные тесты на 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. Я не могу добавлять ссылки сразу в объект, потому что он имеет фиксированный размер

 

В результате, если я использую именно сконвертированный объект, то тестовый класс выполняется успешно без параметров, ничего не делая. Я проверял, что на выходе получаются именно объекты с нужным содержимым. Подскажите пожалуйста, где у меня ошибка.



С Новым 2019 Годом!
2018-12-28 18:00

Cover.png

Поздравляем с наступающим Новым Годом!

 

Желаем вам найти сотни важных багов и не дать им проскользнуть в релиз, изучить новые технологии и инструменты, покорить сложнейшие проекты и стать образцом для подражания!

 

Начинающие тестировщики – желаем успешно найти отличную работу и быстро стать мастерами своего дела!

 

Тест-аналитики – пусть документация будет внятной, а заказчики – отзывчивыми!

 

Автоматизаторы – чистого вам кода и надежного инструментария!

 

Тест-менеджеры – пусть ваша команда всегда работает, как часы!

 

С наступающим Новым Годом и Рождеством, наше любимое сообщество! Есть ли у вас профессиональные планы и цели на Новый Год? Поделитесь на форуме, и все новогодние обещания обязательно исполнятся!

 

Мы подготовили для вас вредные советы – постарайтесь не следовать им в наступающем году, и тогда все ваши профессиональные мечты обязательно сбудутся!

 

Посмотреть подборку вредных советов

 



Декабрьский выпуск рассылки
2018-12-29 08:38

Вышел выпуск рассылки за первую половину декабря, его содержание доступно по ссылке.

 

Как всегда в выпуске рассылки собраны ссылки на новые статьи, слайдкасты, отобраны самые интересные публикации в ленте блогов и темы на форуме.

 

Подписаться на рассылку можно по ссылке.



Как вернуть объект страницы из generic метода
2018-12-29 15:29

Всем привет.

Давно хотел создать метод generic типа, так сказать освоить работу с дженериками. Использую Selenide.

В итоге, написал метод, открывающий страницу в новой вкладке и возвращающий объект этой страницы

@Step("Открываем новую страницу по ссылке {0} и возвращаем объект страницы {1}")
    public static <T extends PageBase> T openPageInNewTab(String url, Class<T> page) {

        Selenide.executeJavaScript("window.open('"+url+"','_blank');");

        switchTo().window(getWebDriver().getWindowHandles().size()-1);

        new WebDriverWait(getWebDriver(), 20)
            .until(webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));

        sleep(5000);//без этого слипа поля нового объекта page будут null

        try {
            return page.newInstance();
        } catch (InstantiationException | IllegalAccessException ex) {
            throw new RuntimeException("Не получилось создать объект страницы " + page.getSimpleName());
        }
    }

Проблема моя заключается в том, что без sleep(5000), все поля возвращаемого объекта page будут null. Хотелось бы избавиться от слипа. Гуглил, и находил на этом форуме такой конструктор класса, для инициализации элементов страницы
 

public SkillServicePage(WebDriver driver){
        PageFactory.initElements(driver, this);
        this.driver = driver;
    }

Вопрос теперь: как вызвать этот конструктор в моём методе ? или есть другой способ инициализации элементов загруженной страницы ? Спасибо



Дубликаты
2018-12-30 09:33

Здравствуйте! Подскажите пожалуйста, может кто знает как "слинковать" дефекты вместе, если они однотипные (дубликаты) в jira ? 



Письмо Деду Морозу от тестировщика
2018-12-30 12:51

Что бы вы, как тестировщик, попросили у Деда Мороза?

(вот я например)

 

Дорогой Дедушка Мороз,

 

пожалуйста, сделай так, чтобы я больше никогда не видела экспектов, запрятанных в методы страниц; объявления элементов через локаторы каждый раз заново в каждом тесте (или каждом методе); удаленных втихушку багов ("Мы решили, что не будем это фиксить" - "А почему?" - "Ммм да фиг знает, сто лет прошло, уже и не помню").

 

А еще, если можно, чтобы браузер Safari взял да исчез бесследно.



© 2010 | Software-Testing.Ru


В избранное