GUI测试是否应使用默认的外观和感觉?

4
我正在开发一个外观独特的应用程序。为了进行GUI测试,我正在使用FEST-Swing。 目前,GUI测试使用默认的Java外观运行。因此,一些测试失败了,但我应该将这视为GUI中的错误,还是使用我的自定义外观进行测试?
后续编辑: 感谢Andrew Tompson的快速回答。但问题似乎仍然存在,因为流式布局的工作方式。 以下是发生的模拟情况:
标准LAF使用比我使用的字体更大,这导致其中一个按钮超出了布局范围。而且我不能使用pack(),因为该容器有尺寸要求。如果您在该示例中没有调用frame.pack(),我认为您会遇到相同的问题。

为什么(在标准 PLAF 中)测试失败了? - Andrew Thompson
因为一些按钮太大了,无法在窗口中呈现。我知道我可以通过更改布局来使它们通过,但我不知道这是否是最佳解决方案。 - Radu Pluta
你的应用程序的目标平台是什么? - Jonas Eicher
该应用程序应在 Windows XP、Vista、7 和 8 上运行。 - Radu Pluta
1
应该使用您打算部署的外观和感觉来测试应用程序。 - MadProgrammer
2个回答

5
一些按钮太大了,无法在窗口内呈现... 我应该把这视为GUI中的错误吗?
是的。看起来当前的GUI非常脆弱。请参考Nested Layout Example,了解在任何PLAF中都能工作的GUI。


所以我应该保持测试运行默认的外观和感觉,并更改布局。谢谢! - Radu Pluta
2
@negurici 这在官方的Oracle教程中已经很好地描述了,当L&F(外观和感觉)改变时,JFrame.pack() 在所有情况下都是必需的。如果JFrame的大小是硬编码的,那么你就没什么运气了... - mKorbel
1
"但我认为问题仍然存在,同样的问题我已经提出了解决方案。我不能使用pack(),因为该容器有一个大小要求。是的,这个大小包含了组件(具有适当的边距和边框),这个大小由pack()提供。你难道会建议‘老板’告诉你这个盒子应该有多少像素宽和多少像素高吗?如果是这样的话,老板是个白痴,产品将始终很脆弱。我对此已无能为力。" - Andrew Thompson
同意使用易损的方式,但确定还有另一种选择,覆盖所有使用的布局管理器(可能会非常疯狂),接受硬编码大小,注意在内部使用大小来自SwingUtilities.calculateInnerArea / layoutCompoundLabel / computeStringWidth。 - mKorbel
感谢您的回复。不幸的是,我无法做太多事情,但希望这些答案能帮助其他遇到类似问题的人。 - Radu Pluta
1
这个答案是正确的;重新更新时,也不要做这个 - trashgod

1

您应该使用自定义的外观和感觉进行测试!这不是GUI本身的错误。

标准LAF使用比我使用的字体更大,这导致其中一个按钮超出了布局范围。而且我不能使用pack(),因为该容器有大小要求。如果您在那个示例中没有调用frame.pack(),我认为您会遇到同样的问题。

您的容器有大小要求。这意味着使用标准LAF时,没有LayoutManager可以计算组件在容器中的任何排列方式,以使它们都适合标准LAF,因为正如您所指出的那样,它们太大了。这意味着您不能同时使用标准LAF和大小要求。

只要您使用自定义LAF并在所有支持的操作系统上测试,并且没有测试失败,一切都没问题。因此,在执行测试之前,只需更改测试并切换到自定义LAF即可。

如果您想在标准LAF中运行应用程序,则必须放松大小要求,直到使用能够处理好显示所有内容的LayoutManager为止。例如,使用MigLayout,您可以方便地设置所有这些大小要求,并最终在JFrame上使用pack()。

编辑:我同意Andrew的观点,您应该对尺寸要求进行批判性审查。在许多情况下,这些要求并不是真正必需的,放弃它们可以大大减少布局中的“失败”。例如,您可以仅指定容器的最小尺寸。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接