gpt4 book ai didi

java - 等效的 GUI 组件 Swing

转载 作者:行者123 更新时间:2023-11-30 05:04:23 24 4
gpt4 key购买 nike

我有以下问题:给定一个 Swing GUI 应用程序(包括源代码),我如何确定两个组件(例如:JButtons、JList 等)是等效的(以相同的用户代码执行的方式)在它们上生成相同的事件)。

我的观点是,首先他们需要为所有可用事件以相同的顺序拥有相同的监听器(我只谈论应用程序本身添加的监听器),然后这些监听器的代码不得取决于生成的事件的来源(因此不应在其代码中调用“操作命令”或 e.getSource())。

这是我正在从事的有关 GUI 应用程序的研究项目,我正在尝试研究如何通过检测等效组件来减少 GUI 测试用例的数量。如果您对此有任何想法(也许我没有考虑到某些事情)请分享。

谢谢。

最佳答案

我个人觉得这取决于你对“等效”的定义。根据您的定义,这意味着“当应用程序生成事件时,应用程序中会发生相同的事情”。但“同样的事情”是指用户的角度还是程序员的角度?

如果是前者,那么这个问题是多余的,因为用户只需要检查不同的操作是否会导致相同的视觉结果来确定它们是否等效。然而,这需要进一步的思考——两个小部件的直接视觉结果可能是相同的,但从长远来看,这些操作对于用户来说可能并不“等效”。例如你按下按钮A,你观察A;但是如果您选择列表 B,您会再次观察 A,而且,可能会发生一些用户未检测到的不明显事件 B。从长远来看,这可能会影响事情。因此,从用户的角度来看,等效性可能是一个棘手的问题。

后一种情况更难分析。正如您所提到的,一种方法可能是它们共享相同的监听器,即使用相同的方法来处理两个小部件。他们可以选择使用不同的监听器,甚至可能使用不同的方法,但如果两种方法本质上遵循相似的逻辑或目的,则它们可能是“等效的”。然而,这可能是具体情况,并且可能是一个非常微妙的主题(比较方法)。

另一个想法:您还可以选择在小部件上对各种不同的测试和输入进行实验,并得出一些统计值来为您的比较分配确定性度量(例如,这些小部件对于所提供的 80% 以上的输入是等效的) )。这可能适用于比较文本输入,例如JTextArea 和 JTextField。

您的假设也可能会影响您对等价性的定义。例如假设这些输入,A 和 B 是等价的。

以上只是我的一些想法和看法。毕竟,这是一篇研究论文。希望我提供了一些值得深思的东西。

编辑

我认为事件的检测本身是一个微不足道的细节。重要的是事件的处理方式。本质上,您的问题可以归结为:是否有某种方法可以比较特定事件的事件处理程序。老实说,我不确定如何做到这一点(也许比较堆栈,检查代码冗余,检查 is-a 关系)。老实说,我不知道如何进行这样的比较。

关于java - 等效的 GUI 组件 Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com