1

我正在使用 JUnit 和 Selenium2 来测试我的应用程序。我使用 Maven 和在 Jenkins 中运行的 surefire 插件执行测试。几周后测试很好,我添加了越来越多的测试,现在测试失败并显示以下消息:

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.11:test (default-test) on project guitest: Failure or timeout
...
Process leaked file descriptors

我首先以为我只是在我的代码中打开文件,例如使用 WebDriver(和 apache commons IO 复制它们)截屏时:

File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
File destFile = new File(...);
FileUtils.copyFile(scrFile, destFile);

但是即使删除了屏幕截图记录,问题仍然存在。

你们有什么指示这里有什么问题和/或如何解决这个问题吗?

编辑:

我已经实现了一个 WebdriverPool,以重用 WebDrivers / 浏览器实例。测试完成后,我使用关闭挂钩关闭所有打开的实例:

Runtime.getRuntime().addShutdownHook(new Thread(){
    @Override
    public void run(){
        for (WebDriver driver : drivers.values())
            driver.close();

        if (!driversInUse.isEmpty())
            throw new IllegalStateException("There are still drivers in use (" + driversInUse.size() + ")");
    }
});

这可能是问题吗?

4

0 回答 0