问题标签 [fest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
863 浏览

java - 扩展流畅的界面

我开始使用Fluent Assertions,我非常喜欢它,但想知道是否可以像这样以一般方式扩展现有测试:

  • 添加hasSizeAtLeast(int limit)方法GroupAssert
  • 添加startsWithIgnoringCase(String prefix)方法StringAssert
  • 使用替代品,例如x.either().isIn(someSet).or().isNull()

这些只是我可能很快需要的例子。我可以为它们中的每一个做一些解决方法,但是我失去了流畅界面的可读性和易用性。

我的最后一个示例旨在同时抛出 iffx.isIn(someSet)x.isNull()do。

0 投票
3 回答
3506 浏览

java - Thread.sleep(time) vs.robot.wait(time)

我正在尝试使用 JUnit 和 FEST 编写一些 GUI 和集成测试。这是我所拥有的:

robot并且args已经初始化。

为什么我打电话时会出现这样的异常wait?为什么我打电话时没有得到同样的异常sleep

0 投票
1 回答
1149 浏览

java - 使用 BasicRobot 时出现 IllegalThreadStateException

我在尝试使用 BasicRobot (FEST) 时得到以下信息。我不知道如何解决这个问题。

这是代码:

我怎样才能解决这个问题?

0 投票
1 回答
2158 浏览

java - 将 FEST-Swing 与 Java 小程序一起使用

我发现FEST-Swing能够自动执行 Java 小程序上的 UI 操作。

FEST-Swing 还可以测试桌面应用程序和小程序(在查看器和浏览器中)。

我试图准备一个脚本来查看它的功能,但我不知道如何将小程序源加载到 FEST 以采取行动。

如何将 Java Applet 加载到 FEST 中?具体来说,我想要一个关于如何将以下小程序加载到 FEST 的示例。 http://java.sun.com/applets/jdk/1.4/demo/applets/GraphicsTest/example1.html

我想要在脚本中单击 Next 和 Previous 按钮。

0 投票
2 回答
839 浏览

java - 使 FEST 等待应用程序加载

我是基于 FEST 的 GUI 测试的新手。

MyFrame 是我的应用程序的根类。

当我运行测试用例时,

上述方法不会打印标签中存在的实际字符串。

我认为 FEST API 没有等待应用程序加载。

是否有任何方法可以推迟 GUI 元素查找?

0 投票
1 回答
127 浏览

java - How to get the right component name and then use it in FEST testing

I am using setname to define buttons in my Swing applcation. I want to use the names in my FEST code. This is the source code:

What then is the result of the names here so that I can use in my fest code?

0 投票
2 回答
1380 浏览

java - 使 FEST:s 组件查找机制等待组件存在

可能重复:
使 FEST 等待应用程序加载

注意:这个问题与这个问题基本相同。由于该问题没有答案,我决定将示例从那里扩展到可运行的 SSCE,并提供一些额外的信息,希望能得到一些帮助。

所以,问题是当寻找的组件可能还不存在时,您应该如何处理组件查找。看看这个简单的单标签 GUI。

而这个测试用例:

怎么了?标签组件的构建被委托给一个缓慢的工作线程。因此,当 GUI 出现时,标签不会立即出现。运行测试用例时,标签还没有出现,所以在执行组件查找时frameWrapper.label("theLabelName"),会抛出 ComponentLookupException。

问题是如何防止抛出此异常?如果它是一个顶级组件,我可以做WindowFinder.findFrame("title").withTimeout(10000)一个 FrameFinder 对象,即使它们出现之前有延迟,它也可以找到可以找到的帧。我想要的是与此类似的东西,但对于其他类型的组件,例如 JLabel。


注意:当然,自己实现该功能并不难。这样做会很简单:

但是,最好不要被迫用这样的循环使测试脚本混乱。感觉好像等待组件在测试脚本中并不是一个太不寻常的任务。所以,在我看来,应该支持在 FEST 中这样做。也许事实并非如此?难道不能等待组件吗?

0 投票
1 回答
411 浏览

java - 如何使用 FEST 获取某个组件

我对FEST有疑问:

我有四个JtextFields JDialogJTextField如果我有四个JTextFields,其中属性nametextvisibility未定义或为空,如何获得确定性。

0 投票
1 回答
3566 浏览

java - 在运行的 Swing 应用程序中替换 AWT EventQueue 的安全方法

我维护的 Swing 应用程序中的各种零星问题似乎是由它使用自己的自定义版本替换默认 AWT 事件队列的方式引起的Toolkit.getDefaultToolkit().getSystemEventQueue().push(new AEventQueue())。参见例如Swing 应用程序中的线程和死锁。那里描述的问题已经解决,但是我的测试(使用 FEST Swing)现在往往会陷入僵局。

我怀疑最好的解决方案是在创建任何 Swing 组件之前,在应用程序初始化开始时替换事件队列。但是,有一些依赖关系使这很尴尬,所以目前我正试图找到一种在初始化后“推送”新事件队列的安全方法,它目前已经完成。

我尝试过的两种方法是

  • SwingUtilities.invokeLater()使用;在 EDT 上推送新队列
  • 初始化后在主线程上推送新队列,并在使用invokeLater()后避免与旧 EDT 上已经启动的任何内容发生死锁。

在阅读https://stackoverflow.com/a/8965448/351885之后,我所期望的是,第一种方法可能在 Java 7 中有效,但在 Java 1.6 中可能需要第二种方法。事实上,第二个在 Java 1.6 中确实有效,而在 Java 7 中,两者似乎都成功完成,但运行非常缓慢。这可能只是一个 FEST 问题,因为应用程序本身似乎反应灵敏。

所以我几乎被迫使用第二种方法,它至少在 Java 1.6 中有效,但我想知道 - 是否有更安全的方法来实现它,因为它似乎很容易受到竞争条件的影响invokeLater在创建新队列之后但之前出现在现有队列上的事件;- 如果有不同的方法我应该改用。

更多详情

第一个“解决方案”如下所示:

当使用 Java 1.6 编译和运行时,我不明白它在做什么。似乎线程正在等待它已经持有的锁:

第二个“解决方案”如下所示:

如上所述,这在 Java 1.6 中似乎可以正常工作,但我不相信它真的很安全。

我还没有弄清楚使用 Java 7 时发生了什么,但主线程似乎花了很长时间休眠方法org.fest.swing.timing.Pause.pause(),这就是为什么我怀疑这可能是 FEST 特定的问题。

0 投票
1 回答
1649 浏览

java - FEST 点击时摆动新框架,无法制作新框架夹具

我正在尝试编写 Fest Swing 测试,但无法制作/找到框架夹具。我有两个 JFrame,一个在点击时打开另一个,我想:

1.) 找到打开的新 JFrame 的框架夹具

2.)从创建的新 JFrame 对象中制作一个新的框架夹具(我可以从原始 JFrame 对象中获取对象。)

我试过使用

找到框架,但遇到 EdtViolationException。

我也试过

但最后一行也给出了 EdtViolationException。有什么建议么?谢谢!