首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AssertJ Swing -杀死所有固定装置

AssertJ Swing -杀死所有固定装置
EN

Stack Overflow用户
提问于 2016-05-20 08:20:47
回答 1查看 366关注 0票数 1

在创建一个新的设备时,是否有一种方法可以杀死所有AssertJ创建的装置,或者如何防止挂起?在尝试将许多遗留GUI测试迁移到AssertJ Swing时,我经常面临以下死锁:

代码语言:javascript
复制
"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)

当然,这是由于错误地使用了固定装置,当一个新的设备正在创建,而另一个仍然处于活动状态时。然而,这种死锁使迁移更加复杂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-01 00:27:44

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

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

现在,我使用这段代码来创建夹具:

代码语言:javascript
复制
assertJRobot = BasicRobot.robotWithCurrentAwtHierarchy();
frameFixture = new FrameFixture(assertJRobot, appFrame());

当我需要创建另一个夹具时,这段代码,而另一个测试没有释放锁,而是关闭了窗口,并清理了其他所有内容:

代码语言:javascript
复制
assertJRobot.cleanUpWithoutDisposingWindows();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37341548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档