Тестирование панелей Wicket с аргументами конструктора

Я получил страницу с несколькими панелями, которая принимает несколько параметров в своих конструкторах. Одним из них является меню, которое принимает список для различных кнопок в меню.

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

Есть ли лучший способ тестирования панелей, которые принимают аргументы в своем конструкторе?


Конечно: код, который дает ошибку нулевого указателя:

public void testVisitPanel(){
    VisitPanel v = new VisitPanel("visitPanel");
    tester.startComponent(v);
    tester.assertContains("DATE");
}

Панель

public VisitPanel(String id) {
    super(id);
    add( new Label("visitDate", "DATE"));
    add( new Label("visitStage", "VISIT SIGNED"));
}

И HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:wicket="http://wicket.sourceforge.net/" 
    xml:lang="en" 
    lang="en">  
<wicket:head>
</wicket:head>

<body>
    <wicket:panel>
        <span wicket:id="visitDate">VISIT DATE</span>
        <span wicket:id="visitStage">STAGE</span>
    </wicket:panel>
</body>
</html>

1 ответ

Если вы используете Wicket 1.4, вы, вероятно, хотите wicketTester.startPanel,

Что я делаю, это создает реализацию ITestPanelSource в тесте делаем что-то вроде:

private class TestPanelSource implements ITestPanelSource {

    private static final long serialVersionUID = 1L;

    public Panel getTestPanel(String panelId) {
        return new MyPanel(panelId, myArg1, myArg2);
    }

}

с myArgN быть полями в классе теста (часто имитирует), которые подходят конструктору, а затем вызвать его в тесте или в setUp метод с

wicketTester.startPanel(new TestPanelSource());

Это в основном делает некоторую работу DummyPage для вас, так что, возможно, это не так уж далеко от того, что вы делаете сейчас, но может по крайней мере сэкономить на реализации фиктивных страниц для тестовой инфраструктуры.

В Wicket 1.5 это не рекомендуется в пользу тестирования компонентов, на которое вы ссылались в вопросе. Это также должно работать, поэтому, возможно, стоит опубликовать некоторый реальный код, который доставляет вам проблемы с этой техникой.

Другие вопросы по тегам