为什么我的测试泄漏文件描述符?

时间:2012-04-26 09:50:47

标签: maven selenium junit jenkins surefire

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

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() + ")");
    }
});

这可能是问题吗?

0 个答案:

没有答案