gpt4 book ai didi

java - 如何调用在另一个线程中运行的程序的关闭钩子(Hook)

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:37 26 4
gpt4 key购买 nike

我正在使用 Jemmy 框架为 Swing 应用程序编写自动化测试。

我的测试套件通过在新线程中调用其 Main 类的 main 方法来运行此应用程序。

我已经编写了很多与 GUI 相关的测试,但现在我有一个更复杂的任务。

我需要检查测试的应用程序在关闭时是否对文件夹进行了一些清理。此操作可能作为关闭 Hook 执行。是否可以在不调用 System.exit(0) 的情况下调用该应用程序的关闭 Hook ?

当调用此命令时,两个线程都将终止。但我希望测试的线程在测试的应用程序关闭后继续运行,以便我可以检查这些文件夹是否仍然存在。是否可以在不更改测试套件架构的情况下调用关闭 Hook ?

最佳答案

我发现了这个,但我没有测试它:

ApplicationShutdownHooks.hook().run(); // JRE 6
ApplicationShutdownHooks.runHooks(); // JRE 7

正如您所看到的,方法的名称随着时间的推移而改变,这意味着您确实不应该这样做。但是,我认为这应该可以完成工作,但该类(class)是私有(private)的。使用一些反射,您可以强制执行它。

// JRE 7
try
{
Class cl = Class.forName("java.lang.ApplicationShutdownHooks");
Method m = cl.getDeclaredMethod("runHooks");
m.setAccessible(true);
m.invoke(null);
} catch (Exception e)
{
e.printStackTrace(System.out);
}

关于java - 如何调用在另一个线程中运行的程序的关闭钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895417/

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