Для такого рода модульного тестирования графического интерфейса более чистым решением является абстракция побочных эффектов пользовательского интерфейса за интерфейсом.
Так что вместо того, чтобы называть что-то вроде:
ShowErrorMessage("This is bad");
Вы создаете интерфейс, отвечающий за отображение объекта
public interface MessageShower {
public function showMessage(String msg);
}
В реальной жизни ваш код будет использовать конкретную реализацию:
public class ConcreteMessageShower {
public function showMessage(String msg) {
ShowErrorMessage(msg);
}
}
Однако в модульном тестировании вы будете использовать фальшивую реализацию, заглушку или макет.
Это действительно общий вопрос «как проверить побочный эффект пользовательского интерфейса?», На который ответ: «Вы не делаете!» ;)
Надеюсь, это поможет.