Должны ли тесты графического интерфейса работать со стандартным внешним видом?

Я работаю над приложением, которое имеет собственный внешний вид. Для тестирования 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.

редактировать: я согласен с Эндрю, что вы должны критически рассмотреть необходимость в размере требования. Во многих случаях эти требования на самом деле не требуются, и их отбрасывание значительно уменьшает "сбои" в верстке. Например, вы можете просто указать минимальный размер контейнера.

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