Java 模拟文件系统是必要的吗?

Java 模拟文件系统是必要的吗?,java,unit-testing,mocking,Java,Unit Testing,Mocking,我已经为文件操作编写了一些业务逻辑,我需要编写一些集成测试来检查是否一切正常。因为时间不够,我只编写了@BeforeClass和@AfterClass方法,创建文件并在测试后删除它们(我不能使用流,因为部分功能是删除文件)。现在我有更多的时间,所以我想知道我的解决方案是否因为没有嘲笑而那么糟糕?如果是这样的话,我是否应该使用JUnit中的java.nio.file.FileSystem或TemporaryFolder的一些实现来将其视为适当的测试 提前感谢这取决于文件创建和删除是需要测试的逻辑的

我已经为文件操作编写了一些业务逻辑,我需要编写一些集成测试来检查是否一切正常。因为时间不够,我只编写了
@BeforeClass
@AfterClass
方法,创建文件并在测试后删除它们(我不能使用流,因为部分功能是删除文件)。现在我有更多的时间,所以我想知道我的解决方案是否因为没有嘲笑而那么糟糕?如果是这样的话,我是否应该使用JUnit中的
java.nio.file.FileSystem
TemporaryFolder
的一些实现来将其视为适当的测试


提前感谢

这取决于文件创建和删除是需要测试的逻辑的一部分,还是功能的副作用。

  • 如果它是功能的一部分,那么应该对它进行模拟,Java7的NIO和
    Java.NIO.file.FileSystem
    就是一条出路
  • 如果只是一个副作用,那么
    TemporaryFolder
    或类似的功能就可以了

  • 所以,可以肯定的是:如果我使用外部库进行这些操作,它会被归类为第二个变体?当然。单元测试应该模拟所有的测试合作者,而您不想测试外部库。因此,在你的情况下,这是一个副作用,然后验证不应该是测试的一部分。