Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GUI测试应该以默认的外观运行吗?_Java_Swing_Testing_Look And Feel_Fest - Fatal编程技术网

Java GUI测试应该以默认的外观运行吗?

Java GUI测试应该以默认的外观运行吗?,java,swing,testing,look-and-feel,fest,Java,Swing,Testing,Look And Feel,Fest,我正在开发一个具有自定义外观的应用程序。对于GUI测试,我使用FEST Swing。 目前,GUI测试使用默认的java外观运行。正因为如此,一些测试失败了,但是我应该认为这是GUI中的一个bug,还是使用我的自定义外观和感觉测试? 稍后编辑: 感谢安德鲁·汤普森的快速回答。但我认为这个问题仍然存在,因为流程布局的工作方式。 下面是发生的情况的模型: 标准LAF使用的字体比我使用的字体大,这会导致其中一个按钮脱离布局。我不能使用pack(),因为这个容器有尺寸要求。如果在该示例中没有调用fra

我正在开发一个具有自定义外观的应用程序。对于GUI测试,我使用FEST Swing。 目前,GUI测试使用默认的java外观运行。正因为如此,一些测试失败了,但是我应该认为这是GUI中的一个bug,还是使用我的自定义外观和感觉测试?

稍后编辑:

感谢安德鲁·汤普森的快速回答。但我认为这个问题仍然存在,因为流程布局的工作方式。 下面是发生的情况的模型:

标准LAF使用的字体比我使用的字体大,这会导致其中一个按钮脱离布局。我不能使用pack(),因为这个容器有尺寸要求。如果在该示例中没有调用frame.pack(),我想您也会遇到同样的问题

有些按钮太大,无法在窗口中渲染。。我是否应该认为这是GUI中的一个bug? 对。似乎当前的GUI非常脆弱。有关在任何PLAF中工作的GUI,请参见


您应该使用自定义外观进行测试!它本身并不是GUI中的错误

标准LAF使用的字体比我现在使用的字体大,这 使其中一个按钮退出布局。我不能用 pack(),因为该容器有尺寸要求。如果你 在那个例子中没有调用frame.pack(),我想您应该 同样的问题

您对容器有尺寸要求。这意味着使用标准LAF时,没有布局管理器可以计算容器中组件的任何排列,因此它们都适合标准LAF,因为正如您所指出的,它们太大了。这意味着您不能有标准LAF和尺寸要求

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

如果您想在标准LAF中运行应用程序,您必须放宽大小要求,直到使用功能强大的LayoutManager正确显示所有内容。例如,使用MigLayout,您可以方便地设置所有这些尺寸要求,并且最终仍然在JFrame上使用pack()


编辑:我同意Andrew的观点,即您应该严格审查尺寸要求的需要。在许多情况下,这些需求并不是真正需要的,删除它们可以大大减少布局中的“失败”。例如,您可以只指定容器的最小大小。

为什么测试(在标准PLAF中)失败?因为有些按钮太大,无法在窗口中渲染。我知道我可以让他们通过改变布局,但我不知道这是否是最好的解决方案你的应用程序的目标平台是什么?该应用程序应该运行在windows xp、vista、,7和8应用程序应使用您打算部署它的外观进行测试,因此我应使用默认外观运行测试,并更改布局。谢谢大家!@negurici这在Oracle官方教程中描述得非常好,JFrame.pack()在所有情况下都是必需的,当L&F发生变化时,如果JFrames大小是硬编码的,您就不走运了……”但我认为问题仍然是“我已经建议解决方案的相同问题”。“我不能使用pack(),因为该容器有尺寸要求”是。包含组件的正确大小(具有适当的边距和边框)。该尺寸由
pack()
提供。什么,你会建议“老板”告诉你这个盒子应该有多少像素宽和高吗?如果是这样的话,老板就是个白痴&产品总是很脆弱的。我对此无能为力。同意脆性,确定还有其他选择,覆盖所有使用的LayoutManager(可能会很疯狂),接受硬编码大小,注意使用内部大小来自SwingUtilities.calculateInnerArea/layoutCompoundLabel/ComputeStringWidth这个答案是正确的;重新更新,也不要这样做。