当前位置: 首页 > 面试题库 >

Mockito-文件的模拟行为

董联
2023-03-14
问题内容

我有一个仅接收单个文件,查找与之相关的文件并打开它的类。遵循以下原则

class DummyFileClass
{
    private File fileOne;
    private File fileTwo;
    public DummyFileClass(File fileOne)
    {
         this.fileOne = fileOne;
         fileTwo = findRelatedFile(fileOne)
    }

    public void someMethod()
    {
         // Do something with files one and two
    }

}

在我的单元测试中,我希望能够测试someMethod()而不必将物理文件放在某个地方。我可以模拟fileOne并将其传递给构造函数,但是由于在构造函数中正在计算fileTwo,因此我无法对此进行控制

我可以模拟方法findRelatedFile()-但这是最佳实践吗?在这里寻找最佳设计,而不是寻求实用的解决方法。我对模拟框架还很陌生。


问题答案:

在这种情况下,我将使用物理文件来测试组件,而不依赖于模拟框架。如前所述,fge这可能会更容易,而且您不必担心您对模拟可能做出的任何错误假设。

例如,如果您依赖File#listFiles()您的模拟返回固定的Files
列表,则不能保证它们的返回顺序-事实上,您可能只有在其他平台上运行代码时才能发现这一事实。

我会考虑使用JUnit的TemporaryFolder规则来帮助您设置测试所需的文件和目录结构,例如:

public class DummyFileClassTest {
    @Rule
    public TemporaryFolder folder = new TemporaryFolder();

    @Test
    public void someMethod() {
        // given
        final File file1 = folder.newFile("myfile1.txt");
        final File file2 = folder.newFile("myfile2.txt");

        ... etc...
    }
}

测试完成后,该规则应清除所有创建的文件和目录。



 类似资料:
  • 问题内容: 我对模拟还很陌生,并且我一直在尝试模拟实际内容(本质上仅在内存中创建一个虚拟文件),以便在任何时候都不会将任何数据写入磁盘。 我尝试过模拟文件和模拟尽可能多的属性的解决方案,然后还使用文件写入器/缓冲写入器将其写入,但是这些方法不能很好地工作,因为它们需要规范路径。有人找到了除此以外的解决方案,但我正在解决这个错误? 我一直在这样做: 任何想法或指导都将非常有帮助。在此之后的某个地方,

  • 我有下课情节。在测试MyTestableClass时,我希望处理Autowired类。我只想模拟AutoWired类中的变量。 示例类如下- 例如,Console在返回true之前应该给我“inside Service class”。 提前道谢!

  • 在我的实现类中,我有一个读写锁定义,如下所示, 我在一个名为的方法中使用它, 正如我所说的,是null,但是rwLock是初始化的。请解释Mockito是如何发生这种情况的。理想的方法是什么?

  • 问题内容: 我有以下代码: 我想使用Mockito创建一个测试。我编写了如下测试: 我在网上收到NullPointerException: ,它表示“策略”列表已初始化,但为空。Mohito有什么办法可以像Spring一样浪费时间?是否将所有实现接口“策略”的实例自动添加到列表中? 顺便说一句,我在Wrapper类中没有任何二传手,如果可能的话,我想以这种方式离开。 问题答案: Mockito不知

  • 我尝试测试一个发送jms消息的类,但无法模拟JmsTemplate JmsProducer.class: JmsProducerTest。类别: 当我运行这个测试用例时,它给了我:java。lang.IllegalArgumentException:对象不是声明类的实例 你对这个问题有什么想法吗?