java - 如何从 class.getResource() 释放资源

标签 java testing gradle groovy resources

在测试中,我试图测试配置文件不存在时的正确行为。

    given:
    File settingsGradleFile = new File( 'src/main/resources/settings.gradle')
    settingsGradleFile.renameTo 'src/main/resources/settings.gradle_OLD'

    ...

    when: 
    App.instance.start(mockStage)

    // now rename it back to its original name
    // NB in practice I put renameTo() in the "cleanup" block - but I have tested in both
    boolean result = settingsGradleFile.renameTo 'src/main/resources/settings.gradle'
    log.debug("result of rename: $result")

第一个 renameTo 工作正常。第二个返回 false (文件名保留为“settings.gradle_OLD”)。在 CUT 的代码中,我们有:

        URL settingsGradleURL = App.class.getResource( '/settings.gradle' )
        ConfigObject conf = new ConfigSlurper().parse( settingsGradleURL )
        projectName = conf.rootProject.name

我可能是错的,但似乎第二个 renameTo 失败了,因为同时发生了这个 getResource() 操作。我怎样才能让这个资源被“释放”?

最佳答案

第二个失败,因为settingsGradleFile仍然引用原始名称“settings.gradle”,而不是新名称“settings.gradle_OLD” .

调用 renameTo 不会更新 File 对象,因为 File 对象是不可变的。

关于java - 如何从 class.getResource() 释放资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60801600/

相关文章:

java - 安卓/java : synchronized object wait and notify

Java OPENCV 模板匹配给出错误的坐标?

testing - Webdriver.io 中的类型 'config' 上不存在属性 'BrowserObject'

java - 我想在单击 X(关闭按钮)时关闭框架

java - Struts 1.2 在 JSP 中显示消息

Android UI 测试无法解析 : Intent 的 Activity

unit-testing - Grails Controller 单元测试不会将页面呈现为 response.text

gradle - Gradle从包含的jar list 中提取依赖项

android - 迁移到AndroidX导致一切崩溃

Gradle 作为非 root