Java JUnit规则临时文件夹-竹上出错
我使用JUnit规则临时文件夹编写了一些UT。 在我的UT中,我模拟一个服务返回此目录,如下所示:Java JUnit规则临时文件夹-竹上出错,java,junit,bamboo,rule,Java,Junit,Bamboo,Rule,我使用JUnit规则临时文件夹编写了一些UT。 在我的UT中,我模拟一个服务返回此目录,如下所示: @Rule public TemporaryFolder folder = new TemporaryFolder(); ... @Test public void myTest(){ when(myMock.doSomething()).thenReturn(folder.getRoot()); ... IOFileFilter filtreBasique = new NameFile
@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);
然后在服务中,文件夹的使用方式如下:
@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时,一切正常,但当我尝试在竹子上运行UT时,出现以下错误:
java.lang.IllegalArgumentException: Parameter 'directory' is not a directory
at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:358)
我不明白为什么…最后我发现了我的错误。。。 这与规则JUnit无关 当我试图列出目录中的文件时,我有一个类似[TEMP\u REPO]\test\test的结构,以及硬写的分隔符。所以我用System.getPropertyfile.separator替换了它们,一切都很好
希望这能帮助某人…如何将文件夹传递到调用FileUtils.listFiles的类中?我假设有多个测试正在竹子中运行。被测试的类是上下文的一部分吗?竹子是否正在重用这个上下文,从而获得被测试类的前一个实例?文件夹由我的UT模拟返回。而且这个类不是上下文的一部分。。。whenmyMock.doSomething.thenReturnfolder.getRoot;是的,我看到了。问题是,模拟是如何提供给被测试的类的?不知何故,您得到的目录是文件夹,而不是临时文件夹提供的根目录。所以,不知何故,你的被测类没有使用mock,或者mock没有在测试之间重置。谢谢你的帮助,但是我发现了我的错误,这并不严重。。。