Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 7中与文件系统相关的集成测试代码_Java_Unit Testing_Integration Testing - Fatal编程技术网

Java 7中与文件系统相关的集成测试代码

Java 7中与文件系统相关的集成测试代码,java,unit-testing,integration-testing,Java,Unit Testing,Integration Testing,我在修改Java5应用程序时遇到了这样一种情况,我想在集成测试的边缘添加额外的测试单元测试,以确保一切正常工作。我需要将应用程序与操作系统提供的实际文件系统完全解耦,然后我想查看文件访问模式和新的文件内容。我可以在完全受控的环境中运行Java 7或任何其他版本的单元测试,我只需要最终的应用程序与Java 5兼容,也就是说,我需要新文件之类的代码。。。成为与之共事的人 这可以在不使用黑魔法字节码操纵模拟框架等的情况下完成吗?例如,通过重新配置Java 7或在封面下添加合适的提供程序?当然,您可以使

我在修改Java5应用程序时遇到了这样一种情况,我想在集成测试的边缘添加额外的测试单元测试,以确保一切正常工作。我需要将应用程序与操作系统提供的实际文件系统完全解耦,然后我想查看文件访问模式和新的文件内容。我可以在完全受控的环境中运行Java 7或任何其他版本的单元测试,我只需要最终的应用程序与Java 5兼容,也就是说,我需要新文件之类的代码。。。成为与之共事的人


这可以在不使用黑魔法字节码操纵模拟框架等的情况下完成吗?例如,通过重新配置Java 7或在封面下添加合适的提供程序?

当然,您可以使用-Xbootclasspath选项模拟您的文件类。但是,你必须考虑许可问题和IMHO,它仍然不会让你做所有需要的测试。 如果文件系统操作对您的应用程序很重要,您应该为文件系统访问创建一个专用的抽象层。它将以某种方式复制java IO api,但允许您测试应用程序如何与IO api交互


然而,如果您正在使用一些先进的技术,或者您需要高可移植性,那么这对您来说是不够的。正如Joachim所说,文件类非常依赖于操作系统和文件系统。它在linux、windows上的行为会有所不同,在遇到符号链接、ACL、超级实例名称等时也会有所不同。如果要测试这种行为,实际上必须测试基础架构,而不是应用程序。因此,您应该考虑在许多不同的环境中使用虚拟机进行集成测试,而不是单元测试,我怀疑这是很容易做到的,因为文件是非常硬连接到文件系统的。操作系统级的欺骗是否是一种可能的解决方案?