当我在调试模式下中断 JUnit4 测试时如何清理资源?
当您在调试模式下中断测试时,如何管理 JUnit4 中的资源清理(在 JUnitRunner 中/在 TestCase 中)?
我通过实现 JUnit 测试来使用 Selenium WebDriver。当我在调试中运行测试时,如果我通过单击停止按钮中断测试,那么我的导航器仍然打开。我想通过调用一个方法来关闭这个导航器。但我不知道在哪里调用这个方法。 事实上,我已经重写了 BlockJUnit4ClassRunner 来拥有自己的 Runner,并且还实现了 WebDriverTestCase。所以我可以做很多事情。
我尝试实现我自己的SecurityManager并重写方法checkExit(int status)但是,当我在调试模式下中断测试时,SecurityManager不会被调用(使用系统.exit(),它工作正常)。
How do you manage resource clean up in JUnit4 (in a JUnitRunner / in a TestCase) when you interrupt the test in debug mode ?
I use Selenium WebDriver by implementing JUnit tests. When I run the test in debug, if I interrupt the test by clicking on the stop button, then my navigator is still open. I would like to close this navigator by calling a method. But I don't know where calling this method.
In fact, I've overrided BlockJUnit4ClassRunner to have my own Runner and I also have implemented a WebDriverTestCase. So I can do a lot of things.
I tried to implement my own SecurityManager and override the method checkExit(int status) but, when I interrupt my test in debug mode, the SecurityManager is not called (with a System.exit(), it works correctly).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
据我所知,当您停止调试会话时,无法执行任何操作。
解决此类问题的唯一方法是:在设置中进行拆卸!
这意味着,在创建新的 WebDriver 之前,您应该检查您的 @Before 方法,看看旧的浏览器进程是否仍在运行,如果找到一个,请将其终止。 (请参阅如何获取当前使用 Java 打开的窗口/进程? 和 使用 Java 终止进程 )
此外你可能还想要删除临时目录中的 webdriver 目录。
As far as I know, there is no way to execute anything, when you stop a debug session.
The only solution to this kind of problem is: Do the tear down in the set up!
This means, you should check in your @Before method, bevor you create a new WebDriver, if an old browser process is still running, and if you find one, kill it. (See How to get a list of current open windows/process with Java? and Killing a process using Java)
Furthermore you probably also want to delete the webdriver directories in your temp directory.