2015-11-24 3 views
0

Я тестирую свое приложение с помощью JUnit. Он использует (или пытается использовать ...) шаблон MVP, hibernate и swing gui.Должен ли быть видимым во время модульного тестирования?

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

Вот (отредактированный) пример:

@Test 
public void testCheckBeitragCalculation() { 
    MainView view = new MainView(); 
    view.initGUI(); 

    Controller persist = new Controller(view); 
    persist .saveData(testObject); 

    Controller edit = new Controller(view); 

    Controller search = new Controller(edit); 

    search.getData("10001"); // primary key 

    TestObject t2 = edit.getViewData(); 

    assertEquals(10, t2.getBeitrag()); 
} 

Я посвящаю главный вид, потому что два контроллера необходима ссылка на главном экране для передачи данных.

Контроллер persist сохраняется объект, контроллер edit представляет собой контроллер для вида редактирования и контроллера search необходима ссылка на edit, потому что он смотрит на объект в базе данных, а затем отображает эти данные в режиме редактирования через контроллер edit.

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

Это плохая практика? Я читал, что вы не должны тестировать GUI-код, но я не тестирую сам GUI, он просто вызывается проверенным кодом.

Спасибо за консультацию!

+0

Если вы когда-либо запускаете эти тесты на машине без дисплея (встроенные в Linux ...), у вас будут проблемы. Возможно, вы захотите проверить насмешливые рамки, такие как mockito, чтобы скрыть свой пользовательский интерфейс при тестировании контроллера/модели. – Jan

+1

Нет, нет, нет. Нет. Единичный тест должен проверять UNIT, а не все приложение. Кроме того, если вы передаете MainView (который является классом, а не интерфейсом!) В контроллер, эти два связаны слишком сильно. – Manu

ответ

0

На это нет правильного ответа. В общем, если он решает вашу цель, вы можете продолжить это, но опять же, если в будущем ваша система сборки продукта добавит эти тестовые примеры junit для выполнения после каждой сборки через запланированную ежедневную сборку (например, jenkins) и коробку, в которой выполняется сборка (как правило, некоторые сервер) не поддерживает какой-либо пользовательский интерфейс (или он недоступен в это конкретное время), как XWindows, тогда ваш тест может потерпеть неудачу.

Смежные вопросы