如何从 class.getResource() 释放资源
How to release a resource from class.getResource()
在测试中,我试图测试缺少配置文件时的正确行为。
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
工作正常。第二个 returns false
(文件名保持在 "settings.gradle_OLD")。在 CUT 的代码中,我们有:
URL settingsGradleURL = App.class.getResource( '/settings.gradle' )
ConfigObject conf = new ConfigSlurper().parse( settingsGradleURL )
projectName = conf.rootProject.name
我可能错了,但似乎第二个 renameTo
失败了,因为与此同时发生了这个 getResource()
操作。我怎样才能让这个资源成为 "released"?
第二个失败,因为 settingsGradleFile
仍然引用原始名称 "settings.gradle"
,而不是新名称 "settings.gradle_OLD"
。
调用 renameTo
不会更新 File
对象,因为 File
对象是不可变的。
在测试中,我试图测试缺少配置文件时的正确行为。
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
工作正常。第二个 returns false
(文件名保持在 "settings.gradle_OLD")。在 CUT 的代码中,我们有:
URL settingsGradleURL = App.class.getResource( '/settings.gradle' )
ConfigObject conf = new ConfigSlurper().parse( settingsGradleURL )
projectName = conf.rootProject.name
我可能错了,但似乎第二个 renameTo
失败了,因为与此同时发生了这个 getResource()
操作。我怎样才能让这个资源成为 "released"?
第二个失败,因为 settingsGradleFile
仍然引用原始名称 "settings.gradle"
,而不是新名称 "settings.gradle_OLD"
。
调用 renameTo
不会更新 File
对象,因为 File
对象是不可变的。