Как освободить ресурс от class.getResource () - PullRequest
0 голосов
/ 22 марта 2020

В тесте я пытаюсь проверить правильность поведения при отсутствии файла конфигурации.

    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(). Как я могу получить этот ресурс, чтобы быть "выпущенным"?

1 Ответ

1 голос
/ 22 марта 2020

Второй сбой, потому что settingsGradleFile по-прежнему ссылается на исходное имя "settings.gradle", а не на новое имя "settings.gradle_OLD".

При вызове renameTo не обновляется объект File, поскольку File объекты неизменны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...