断言文件是在Junit(Java 6)中创建的

断言文件是在Junit(Java 6)中创建的,java,testing,junit,Java,Testing,Junit,我想为Java程序编写一个集成,该程序从源目录中获取一个输入文件,将其复制到暂存,将处理结果写入输出目录,然后从暂存中删除临时文件。检查输出是否正常很容易,但是是否有一种简单的方法来检查暂存区域是否被正确使用?我想到了两件事:监视文件夹中的文件系统事件(有什么好的包装吗?),或者一些高级权限游戏(允许创建但不允许删除)。有什么建议吗 非常感谢 注意:Windows上的Java 6…假设您已经下定决心要这么做,我认为最简单的方法就是在文件被复制后检查文件是否在暂存文件夹中,然后在文件被删除后检查文

我想为Java程序编写一个集成,该程序从
目录中获取一个输入文件,将其复制到
暂存
,将处理结果写入
输出
目录,然后从
暂存
中删除临时文件。检查输出是否正常很容易,但是是否有一种简单的方法来检查暂存区域是否被正确使用?我想到了两件事:监视文件夹中的文件系统事件(有什么好的包装吗?),或者一些高级权限游戏(允许创建但不允许删除)。有什么建议吗

非常感谢


注意:Windows上的Java 6…

假设您已经下定决心要这么做,我认为最简单的方法就是在文件被复制后检查文件是否在暂存文件夹中,然后在文件被删除后检查文件是否不在暂存文件夹中

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { /* do something */}

这里的问题是复制、处理和清理都发生在被测试的方法中。因此,在方法运行之前,staging将是空的;因此,在方法返回之后,它就会出现。我明白了。您可能会考虑将这些组件中的一些分解成单独的函数/类,然后分别对它们进行测试。例如,您可以创建一个类,其全部职责是FileIO。您正在测试的方法只调用“myFileIO.copyFile(from,to)”。那么当你写测试的时候,你就有了更多的自由。您可以使用mock MyFileIO对象,而不必担心文件是否真的到达了目录,但您可以只关注程序的逻辑执行。然后,您可以分别为MyFileIO编写测试。当然,这是正确的答案。然而,我正在使用0个测试进入生产代码,所以在允许我重构之前,我需要一些端到端测试……啊,我明白了。那样的话。。。我个人会这样做并编写测试来证明我重构的东西仍然有效。我知道这可能不是一个选项。啊,听起来它会工作,但它是Java 7。。。