问题标签 [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.
java - 自定义 FEST 断言:显示可读消息
我创建了一个自定义 FEST 条件来验证我的实际字符串是否匹配或等于预期的字符串
每当条件失败时,我希望它显示一条消息,告诉我原始和预期的字符串是什么
当前显示字符串是
有没有办法让这条消息也显示匹配的对象?
我尝试覆盖类中的 toString 方法
但这似乎不起作用。
java - Java Swing GUI 测试 Fest JPanel 夹具错误
尝试使用 FEST 测试我的 GUI,但我在尝试访问自定义 JPanel 中包含的组件时遇到问题(TopPanel 扩展 JPanel)。因此,下面的代码在尝试引用作为 MainJFrame 内的字段存在的“topPane”时失败。我在这里做错了什么?
这是堆栈跟踪,以防万一:
无法使用匹配器 org.fest.swing.core.NameAndTypeMatcher[name='topPanel', type=javax.swing.JPanel, requireShowing=true] 找到组件。
组件层次结构:myapp.ui.MainJFrame[name='frame0', title='myapp', enabled=true, visible=true,showing=true] javax.swing.JRootPane[] javax.swing.JPanel[name='null .glassPane'] javax.swing.JLayeredPane[] javax.swing.JPanel[name='null.contentPane'] myapp.ui.TopPanel[name=null] javax.swing.JLabel[name=null, text='输入网址:',启用=真,可见=真,显示=真] javax.swing.JTextField[名称=空,文本='',启用=真,可见=真,显示=真] javax.swing.JButton[名称=空,文本='提交',启用=真,可见=真,显示=真] myapp.ui.ContentPanel[名称=空] javax.swing.JScrollPane[名称=空,启用=真,可见=真,显示=真] javax.swing.JViewport[,1,1,381x270,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=java.awt.Point[x=0,y= 0],scrollUnderway=false] javax.swing.JList[name=null, selectedValues=[], contents=[], selectionMode=MULTIPLE_INTERVAL_SELECTION, enabled=true, visible=true,showing=true] javax.swing.CellRendererPane[, 0,0,0x0,hidden] javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=270, enabled=true, visible=false,showing=false] javax. swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=真,可见=真,显示=false] javax.swing.JScrollPane$ScrollBar[name=null, value=0, blockIncrement=10, minimum=0, maximum=381, enabled=true, visible=false,showing=false] javax.swing.plaf。 metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=真,显示=假] myapp.ui.StatusPanel[名称=空] javax.swing.JLabel[名称=空,文本='状态:',启用=真,可见=真,显示=真] javax.swing.JLabel [名称=空,文本='',启用=真,可见=真,显示=真]plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true,可见=真,显示=假] myapp.ui.StatusPanel[名称=空] javax.swing.JLabel[名称=空,文本='状态:',启用=真,可见=真,显示=真] javax.swing .JLabel[名称=空,文本='',启用=真,可见=真,显示=真]plaf.metal.MetalScrollButton[name=null, text='', enabled=true, visible=true,showing=false] javax.swing.plaf.metal.MetalScrollButton[name=null, text='', enabled=true,可见=真,显示=假] myapp.ui.StatusPanel[名称=空] javax.swing.JLabel[名称=空,文本='状态:',启用=真,可见=真,显示=真] javax.swing .JLabel[名称=空,文本='',启用=真,可见=真,显示=真]显示=真] javax.swing.JLabel [名称=空,文本='',启用=真,可见=真,显示=真]显示=真] javax.swing.JLabel [名称=空,文本='',启用=真,可见=真,显示=真]
org.fest.swing.exception.ComponentLookupException 在 org.fest.swing.core.BasicComponentFinder.componentNotFound(BasicComponentFinder.java:184) 在 org.fest.swing.core.BasicComponentFinder.find(BasicComponentFinder.java:169) 在 org. fest.swing.core.BasicComponentFinder.find(BasicComponentFinder.java:158) 在 org.fest.swing.core.BasicComponentFinder.findByName(BasicComponentFinder.java:136) 在 org.fest.swing.fixture.ContainerFixture.findByName(ContainerFixture. java:822) 在 org.fest.swing.fixture.ContainerFixture.panel(ContainerFixture.java:406) 在 myapp.ui.myappUITest.setUp(myappUITest.java:32)
java - 使用 WindowFinder 查找模式对话框
我正在使用 FEST 测试我的 Java 对话框,我需要测试是否创建了一个新的模式对话框。
注意:TestFrame 是一个辅助类,它扩展了 JFrame 以用于单元测试。
在我的测试中,我单击了一个按钮,它会出现一个模式对话框。我正在尝试查找并验证已创建对话框,但是我的所有尝试都找不到任何东西:
其中机器人 =
- BasicRobot.robotWithCurrentAwtHierarchy();
- BasicRobot.robotWithNewAwtHierarchy();
- frameFixture.robot (frameFixture => JFrame)
我也尝试过指定机器人的查找范围:
网上有很多 FEST 示例可以调用,robot()
但我不知道这个机器人功能应该如何或应该是什么。
为什么我找不到我新创建的弹出对话框?
java - 使用机器人定位主框架 (JFrame)(FEST Swing 测试)
我正在使用 Java web start 应用程序(通过 JNLP 运行)。目前我正在尝试使用以下代码为应用程序定位主框架:
但是我收到一个错误:
org.fest.swing.exception.WaitTimedOutError: Timed out waiting for component to be found using matcher swing.app.simple.test.JavaSwingTests$9@6c5b675e Unable to find component using matcher swing.app.simple.test.JavaSwingTests$9@6c5b675e .
下面的方法是我用来按名称匹配框架:
如果我做错了什么或没有考虑我应该做的事情,任何人都可以告诉我。我是 FEST 的新手,刚开始使用它
谢谢
java - 在 Netbeans 上设置 FEST
在使用 UISpec4J 获得不满意的结果后,我正在尝试使用 FEST 进行自动化测试。我对 NetBeans 有点陌生,我正在使用的项目必须使用 6.8。我使用 FEST 编写了一个测试用例,并从 FEST 的谷歌代码库下载了 zip 文件。我尝试在属性库选项卡下设置 jar 文件,但我仍然遇到问题。我无法引用 FEST 中的方法和类。
java - 在 NetBeans 中引用 .jar 文件
我正在尝试使用 FEST 自动化软件。我目前正在处理 NetBeans 6.8,因为它是我在工作中必须使用的,并且由于我们的系统要求,目前无法升级软件
[TLDR:不要告诉我升级 NetBeans,因为我不能]
我已经从谷歌代码库下载了 jar 文件,并试图让一个非常简单的应用程序工作。我已经尝试通过我的项目的属性面板将 jar 文件添加到库中。NetBeans 仍然找不到这些方法。还有哪里/如何将这些 jar 文件添加到类路径中?
java - fest 和 assert-j 与自定义地图的细微差别
在我正在工作的项目中,已决定停止使用 fest 进行测试断言,而是使用 assertj。我们正在使用 Java 7,并且我们正在从 fest 版本 2.0M10 迁移到 assertj-core 版本 2.4.1。代码库相当大,但从 fest 到 assertj 的过渡很顺利,基本上是更改了导入名称并处理了重命名的方法。但是,我注意到在转换后我们在特定测试类中遇到了测试失败(我应该补充一点,我们使用的是 JUnit v4.12)。下面我展示了一个小的、独立的测试用例来突出这个问题:
我很抱歉这么长的一段代码。从测试结果中可以看出,当在 hashmap 上使用 isEqualTo() 时,fest 和 assertj 之间似乎存在差异,其中一个 hashmap 封装在实现接口映射的类中。我的问题是如何处理这个?我可以翻转断言中的顺序,即使用 assertThat(b).isEqualTo(a) 而不是 assertThat(a).isEqualTo(b)。但是对于我来说,在一个有很多断言的大型测试类中对特定断言做这样一个翻转对我来说有点奇怪。fest 和 assertj 之间的这种差异是预期的还是意外的?是否是预期的行为(因为两者都在一个表达式上失败)?我应该如何更新测试用例,用上面的代码中的场景进行相等性检查有没有更好的方法?感谢您阅读本文并感谢您的任何建议!
java - 单击按钮时,使用 org.fest.swing 的测试会随机挂起
我有一个 testng gui 测试,我在其中使用 org.fest.swing API。它有 3 个测试用例,在每个测试用例结束时它会尝试关闭一个对话框。执行时,它随机挂在一个对话框上,它应该单击其中一个按钮,然后在断言条件下失败。
例子:
断言条件是:
它失败了很多次(并不总是)。执行单个测试时,它总是通过。无法确定失败的原因。
找到了一个类似的参考,但它没有用。 https://github.com/joel-costigliola/assertj-swing/issues/30
---------- 编辑 1 ----------
更多分析发现,在同样的方法中,会启动一个线程来关闭Frame。它在 run() 中有单行:- org.fest.swing.fixture.JInternalFrameFixture.close();
启动此线程后,主线程调用上述对话框(如上例所示)。稍后主线程调用 t.join(5000) ... 来检查线程任务是否完成。稍后检查 Frame 可见性是否为假。
在所有失败情况下,线程状态都是 WAITING 并且正在打印 stackTrace :-
10:19:32 [testng] 线程状态:WAITING 10:19:32 [testng] StackTrace1 [sun.misc.Unsafe.park(Native Method), java.util.concurrent.locks.LockSupport.park(LockSupport.java: 175), java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836), java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997), java.util.concurrent.locks.AbstractQueuedSynchronizer .acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)、java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)、org.fest.swing.edt.GuiActionRunner.run(GuiActionRunner.java:117)、org.fest。 swing.edt.GuiActionRunner.execute(GuiActionRunner.java:96)、org.fest.swing.driver.JInternalFrameCloseTask.close(JInternalFrameCloseTask.java:33)、org.fest.swing.driver。JInternalFrameDriver.close(JInternalFrameDriver.java:339), org.fest.swing.fixture.JInternalFrameFixture.close(JInternalFrameFixture.java:150),
所以这意味着,因为线程处于 WAITING 状态并且卡在某个锁定条件下,它无法关闭 Frame,因此断言条件失败。
将时间更新为 500 秒,对于失败场景,它仍处于 WAITING 状态。无法找到线程卡在等待状态的原因。
java - 使用 Fest 或其他 java 工具的基于 Java-Applet 的应用程序的浏览器自动化?
我有一个遗留的 Web 应用程序,它具有使用 Java-Applet 开发的 UI 控件,并试图在这里摆脱手动验证。它仅在浏览器中运行 JRE 版本 1.6 或更高版本的浏览器,我们无法访问 JAVA Applet 代码。我们所拥有的只是应用程序 URL 和用于登录的有效用户凭据。Selenium 需要 UI 组件,例如文本框、复选框、单选按钮、提交按钮、链接、文本等,作为 html 标签,以便与之交互。但是在这里,整个应用程序是用 java-applet(有时是 swing 控件)构建的,而 Selenium 无法控制/访问这些 UI 组件。
假设如果使用 Selenium(使用 java),我们可以登录到应用程序,因为登录屏幕是纯 html 对象。但是,一旦应用程序启动,我们不确定如何控制其中的对象,因为我相信它们是使用秋千设计的。遇到了 FEST,但它更多的是在开发环境中运行的开发人员端工具(一种白盒测试)。因此,以某种方式建议我如何通过使用 Selenium 等任何开源工具来实现(考虑到成本,HP UFT 不适合)
java - Why does JPanelFixture.comboBox().pressAndReleaseKeys() work with FEST, but not with AssertJ?
When trying to simulate input using AssertJ's pressAndReleaseKeys() for unit testing a JComboBox in a Java Swing program, I am not seeing the expected behavior. The program will most often hang on the pressAndReleaseKeys line and then fail, or occasionally will delete all the text currently in the JComboBox being tested, causing later assertions to fail (i.e. requireSelection()). The stack trace I receive for the provided example program (see below) when it hangs is as follows:
Focus change to javax.swing.JComboBox[name='combob', selectedItem='Bean', contents=["Pork", "Beans", "Rice"], editable=true, enabled=true, visible=true, showing=true] failed focus owner: javax.swing.plaf.metal.MetalComboBoxEditor$1(javax.swing.JTextField)[name=null, text='Bean', enabled=true, visible=true, showing=true]
org.assertj.swing.exception.ActionFailedException
at org.assertj.swing.exception.ActionFailedException.actionFailure(ActionFailedException.java:33)
at org.assertj.swing.core.BasicRobot.focus(BasicRobot.java:301)
at org.assertj.swing.core.BasicRobot.focusAndWaitForFocusGain(BasicRobot.java:270)
at org.assertj.swing.driver.ComponentDriver.focusAndWaitForFocusGain(ComponentDriver.java:419)
at org.assertj.swing.driver.ComponentDriver.pressAndReleaseKeys(ComponentDriver.java:315)
at org.assertj.swing.fixture.AbstractComponentFixture.pressAndReleaseKeys(AbstractComponentFixture.java:293)
at javapractice.ComboBoxSampleTest.testMain(ComboBoxSampleTest.java:59)
I have been using FEST and am hoping to migrate my tests to AssertJ since it is being actively maintained, whereas FEST hasn't been updated for years. I used Joel Costigliola's migration from Fest to AssertJ guide, but am having trouble when simulating keyboard input by using pressAndReleaseKeys(). I am able to simulate input when using a JTextComponentFixture i.e.
(where window is a FrameFixture, a container in both AssertJ and FEST), but I am unable to simulate input when using a JComboBoxFixture i.e.
This obstacle can usually be avoided, since most "key presses" can be simulated by using enterText i.e.
but I would like to be able to use the arrow keys, control key, and other keys where I can't simulate the key press using enterText(). Is this failure due to an issue with my environment*, an issue with the way I'm using it, or is the API itself flawed?
I tried using pressKey() and then releaseKey() as a workaround, but that doesn't work with JComboBox either, and my program instead hangs on pressKey(). That being said, I am not able to use pressKey() and releaseKey() to test a JComboBox with FEST either.
*Environment details:
Language version: java version "1.8.0_131"
Platform version (e.g. .NET 3.5; note that this isn’t always implicit from the language version, or vice versa)
Operating system: Red Hat Release 6.10 (Santiago)
IDE: Netbeans 8.0.2
Sample GUI application:
Test File for Fest:
Test File for AssertJ: