2016-02-29 5 views
0

Существует полезная аннотация @TempDir в spock, которая помогает нам создавать временную папку и автоматически удалять ее. Полное имя класса аннотаций выглядит следующим образом:Спок: можно ли указать, где создать tempDir?

com.github.goldin.spock.extensions.tempdir.TempDir

Обычно создать временную папку в папке, которая определяется как переменная окружения TMP. Вопрос в том, можно ли указать папку, где можно создать временную папку?

+0

Невозможно переопределить 'java.io.tmpdir' с помощью System.setProperty (" java.io.tmpdir ","/tmp "); в методе 'setup' и вернуть его в исходное значение в' cleanup'? – Bunti

+0

Его возможно. Но это похоже на изменение, которое может повлиять на другие одновременно запущенные задачи в одном экземпляре. Например, если мы запустим этот тест в TeamCity, это может вызвать множество проблем с другими сценариями сборки. – MiamiBeach

ответ

0

Вы можете использовать combinaison из @RestoreSystemProperties и System.setProperty():

@RestoreSystemProperties 
class TmpSpec extends Specification { 

    def setup() { 
     System.properties['java.io.tmpdir'] = "target/test" 
     new File("target/test").mkdirs() 
    } 

    def "create a tmp file"() { 
     given: "a tmp file" 
      def file = File.createTempDir() 

     expect: 
      file.path.contains("target/test") 

    } 

} 

Вы можете создать свой собственный JUnit @Rule, если вы хотите больше контроля этой функции во время тестов.

Смежные вопросы