1

我有一种情况,我正在修改 Java 5 应用程序,我想添加额外的测试(与集成测试接壤的单元测试)以确保一切正常。我需要将应用程序与操作系统提供的实际文件系统完全分离,然后我想查看文件访问模式和新文件内容。我可以在完全受控的环境中在 Java 7 或任何其他版本中运行单元测试,我只需要最终的应用程序与 Java 5 兼容,即我需要像可以使用的代码一样new File(...)

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

4

1 回答 1

0

确保您可以使用-Xbootclasspath选项模拟您的 File 类。但是您必须考虑许可问题,并且恕我直言,它仍然不会让您进行所有必需的测试。

如果文件系统操作对您的应用程序很重要,您应该为文件系统访问创建一个专用的抽象层。它会以某种方式复制 java IO api,但允许您测试应用程序如何与 IO api 交互。

但是,如果您使用一些先进的技术或者您需要高便携性,那么这对您来说是不够的。正如 Joachim 所说,File 类非常依赖于操作系统和文件系统。当你遇到符号链接、acls、大写名称等时,它在 linux、windows 上的行为会有所不同。如果你想测试这种行为,事实上,你必须测试基础设施而不是应用程序。因此,您应该考虑在许多不同环境(可能使用虚拟机)上进行集成测试,而不是单元测试

于 2013-09-29T12:34:47.803 回答