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

问题描述 投票:0回答:1

在测试中,我尝试在缺少配置文件时测试正确的行为。

    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()操作。如何获得此资源的“释放”?

java testing gradle groovy resources
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.