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