Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit规则临时文件夹-竹上出错_Java_Junit_Bamboo_Rule - Fatal编程技术网

Java JUnit规则临时文件夹-竹上出错

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

我使用JUnit规则临时文件夹编写了一些UT。 在我的UT中,我模拟一个服务返回此目录,如下所示:

@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没有在测试之间重置。谢谢你的帮助,但是我发现了我的错误,这并不严重。。。