gpt4 book ai didi

java - AssertJ Swing - 杀死所有装置

转载 作者:行者123 更新时间:2023-12-01 09:54:38 56 4
gpt4 key购买 nike

有没有一种方法可以杀死所有 AssertJ 创建的固定装置,或者在创建新固定装置时如何防止挂起?当尝试将大量遗留 GUI 测试迁移到 AssertJ Swing 时,我经常面临以下僵局:

"main" #1 prio=5 os_prio=0 tid=0x0000000002080000 nid=0x9c waiting on condition [0x00000000024cd000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x0000000547049720> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at org.assertj.swing.lock.ScreenLock.acquire(ScreenLock.java:57)
at org.assertj.swing.core.BasicRobot.acquireScreenLock(BasicRobot.java:164)
at org.assertj.swing.core.BasicRobot.robotWithCurrentAwtHierarchy(BasicRobot.java:153)
at org.assertj.swing.fixture.AbstractWindowFixture.<init>(AbstractWindowFixture.java:119)
at org.assertj.swing.fixture.FrameFixture.<init>(FrameFixture.java:43)

这当然是由于错误使用灯具造成的,当一个新灯具正在创建而另一个灯具仍处于 Activity 状态时。然而,这种僵局使迁移变得复杂。

最佳答案

在对框架进行了更多探索之后,我意识到

  • 我不需要使用锁定
  • 如果我自己创建机器人,就可以释放锁

现在我使用此代码来创建夹具:

assertJRobot = BasicRobot.robotWithCurrentAwtHierarchy();
frameFixture = new FrameFixture(assertJRobot, appFrame());

当我需要创建另一个固定装置,而其他测试没有释放锁但关闭窗口并清理其他所有内容时,此代码:

assertJRobot.cleanUpWithoutDisposingWindows();

关于java - AssertJ Swing - 杀死所有装置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37341548/

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