出于某种原因,我有一个路径(// what / ever)存储在修改文件的类中的私有变量中。因此,当我测试它时,它会尝试修改文件,但是,由于文件不存在,因此会抛出异常。
当然,对于单元测试,我不想在文件系统中创建该文件。
有没有办法模拟那个文件并强制机器写入// my /文件夹而不是// what / ever?
答案 0 :(得分:0)
模拟文件本身可能很困难。除非,您将文件处理抽象为您管理的某个界面,并且可以在测试运行期间注入模拟实现。另一种方法是公开文件路径,以便您可以将其更改为测试设置代码的一部分。
另一种方法涉及JUnit 4.在JUnit 4中,您可以在测试运行中管理临时文件和文件夹。它将清除您创建的任何新文件或文件夹。
可以这样做:
public class MyFileTest {
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
@Test
public void testSomething() throws IOException {
File tempFile = testFolder.newFile("myfile");
我认为这样的事情会让你创建实际的文件,所以你的代码可以修改它,因此不会爆炸。您可能希望根据以下方面准确考虑测试的范围:
回答其中一些问题可能会让您朝着正确的方向前进,这样您应该编写什么样的测试以及为了满足测试要求可能需要进行哪些重构。