2014-11-25 2 views
0

Я написал несколько UT с помощью правила JUnit TemporaryFolder. В моей UT, я издеваться службу вернуть эту директорию, как это:Правила JUnit TemporaryFolder - ошибка на бамбуке

@Rule 
public TemporaryFolder folder = new TemporaryFolder(); 
... 
@Test 
public void myTest(){ 
    when(myMock.doSomething()).thenReturn(folder.getRoot()); 
... 

Тогда в службе, папка используется так:

IOFileFilter filtreBasique = new NameFileFilter(tagRCPName + ".xml", IOCase.INSENSITIVE); 
FileUtils.listFiles(folder, filtreBasique, TrueFileFilter.TRUE); 

Когда я запускаю мой UT на моем компьютере, это все хорошо, но когда я пытаюсь запустить его на бамбук, у меня есть эта ошибка:

java.lang.IllegalArgumentException: Parameter 'directory' is not a directory 
at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:358) 

Я не могу понять, почему ...

+0

Как вы проходя 'folder' в класс, который вызывает' FileUtils.listFiles'? Я предполагаю, что в Bamboo выполняется несколько тестов. Является ли класс тестируемой частью контекста? Бамбук повторно использует этот контекст и тем самым получает предыдущий экземпляр тестируемого класса? –

+0

'папка' возвращается макетом моего UT. И класс не является частью контекста ... 'when (myMock.doSomething()). ThenReturn (folder.getRoot());' – bryce

+0

Да, я это видел. Дело в том, как макет предоставляется испытуемому классу? Как-то вы получаете 'directory' как папку, которая не является чем-то, что' TemporaryFolder' будет предоставлять в качестве корня. Так что как-то ваш испытуемый класс не использует макет или макет не сбрасывается между тестами. –

ответ

0

Наконец я нашел ошибку ... Это не имеет ничего общего с Правилом JUnit ...

Это было, когда я попытался перечислить файлы в моих каталогах я имел структуру, как [TEMP_REPO] \ Test \ тест и разделители, где написано написано. Поэтому я заменяю их на System.getProperty("file.separator"), и все прошло хорошо.

Надеется, что это может помочь кому-то ...