Должны ли тесты графического интерфейса работать со стандартным внешним видом?
Я работаю над приложением, которое имеет собственный внешний вид. Для тестирования GUI я использую FEST-Swing. В настоящее время тесты GUI выполняются со стандартным внешним видом java. Из-за этого некоторые тесты не выполняются, но стоит ли считать это ошибкой в графическом интерфейсе или тестом с использованием моего пользовательского интерфейса?
Позже отредактируйте:
Спасибо Эндрю Томпсон за быстрый ответ. Но проблема, я думаю, все еще остается, из-за того, как работает схема потока. Вот макет того, что происходит:
Стандартный LAF использует шрифт большего размера, чем тот, который я использую, и это приводит к тому, что одна из кнопок выходит из макета. И я не могу использовать pack(), так как для этого контейнера есть требование к размеру. Если бы вы не вызывали frame.pack() в этом примере, я думаю, у вас возникла бы та же проблема.
2 ответа
некоторые кнопки слишком велики и не отображаются в окне... следует ли считать это ошибкой в графическом интерфейсе...
Да. Кажется, что текущий графический интерфейс очень хрупкий. Посмотрите Вложенный Пример Разметки для GUI, который работает в любом PLAF.
Вы должны проверить, используя свой собственный внешний вид! Это не ошибка в GUI как таковая.
Стандартный LAF использует шрифт большего размера, чем тот, который я использую, и это приводит к тому, что одна из кнопок выходит из макета. И я не могу использовать pack(), так как для этого контейнера есть требование к размеру. Если бы вы не вызывали frame.pack() в этом примере, я думаю, у вас возникла бы та же проблема.
У вас есть требования к размеру контейнера. Это означает, что со стандартным LAF никакой LayoutManager не может вычислить любое расположение компонентов в контейнере, так что все они будут соответствовать стандартному LAF, потому что, как вы указываете, они просто слишком велики. Это означает, что у вас не может быть стандартного LAF и требования к размеру.
Пока вы используете только свой собственный LAF и тестируете с этим пользовательским LAF на всех поддерживаемых системах ОС, и ни один тест не дает сбой, все в порядке. Так что просто измените свои тесты и переключитесь на свой собственный LAF перед выполнением тестов.
Если вы когда-нибудь захотите запустить свое приложение в стандартном LAF, вам придется ослабить требование к размеру, пока все не будет отображаться правильно с помощью совместимого LayoutManager. Например, с помощью MigLayout вы можете удобно установить все эти требования к размеру и, в конце концов, по-прежнему использовать pack () для JFrame.
редактировать: я согласен с Эндрю, что вы должны критически рассмотреть необходимость в размере требования. Во многих случаях эти требования на самом деле не требуются, и их отбрасывание значительно уменьшает "сбои" в верстке. Например, вы можете просто указать минимальный размер контейнера.