0
我用JUnit Rule TemporaryFolder寫了一些UT。 在我的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,它是一切OK,但是當我嘗試在竹運行它,我有這樣的錯誤:
java.lang.IllegalArgumentException: Parameter 'directory' is not a directory
at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:358)
我想不通爲什麼...
你是如何傳遞'folder'到調用'FileUtils.listFiles'類?我假設在Bamboo中有多個測試正在運行。被測試的類是否是上下文的一部分? Bamboo是否重用了這個上下文,從而得到了被測試類的前一個實例? – 2014-11-25 12:12:16
我的UT模擬器返回'folder'。並且該類不是上下文的一部分... 'when(myMock.doSomething())。thenReturn(folder.getRoot());' – bryce 2014-11-25 12:33:22
是的,我看到了。關鍵是,這個模擬課程是如何提供給被測試的課程的?不知何故,你得到'目錄'作爲不是'TemporaryFolder'的文件夾將作爲根提供的文件夾。所以不知怎麼,你的班級在測試中不使用模擬或模擬不被重置。 – 2014-11-25 12:40:00