Я написал несколько 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)
Я не могу понять, почему ...
Как вы проходя 'folder' в класс, который вызывает' FileUtils.listFiles'? Я предполагаю, что в Bamboo выполняется несколько тестов. Является ли класс тестируемой частью контекста? Бамбук повторно использует этот контекст и тем самым получает предыдущий экземпляр тестируемого класса? –
'папка' возвращается макетом моего UT. И класс не является частью контекста ... 'when (myMock.doSomething()). ThenReturn (folder.getRoot());' – bryce
Да, я это видел. Дело в том, как макет предоставляется испытуемому классу? Как-то вы получаете 'directory' как папку, которая не является чем-то, что' TemporaryFolder' будет предоставлять в качестве корня. Так что как-то ваш испытуемый класс не использует макет или макет не сбрасывается между тестами. –