【问题标题】:Write a Mock method applicable only for specific tests in a test class编写仅适用于测试类中特定测试的 Mock 方法
【发布时间】:2019-07-31 09:55:38
【问题描述】:

我有一个测试类,其中有大约 10 个单元测试用例。在此,我创建了一个模拟方法,它在 10 个测试用例中只有 2 个有用。

public static class MockCreateStudent extends Mockup<CreateStudentDAO>{
    @Mock
    public boolean isFeesPaid(long studentID){
        return true;
    }
}

所以从技术上讲,我希望 isFeesPaid() 方法按原样执行 8 个测试用例并模拟 2 个测试用例。

有什么方法可以实现吗?

【问题讨论】:

  • 这听起来不对——为什么你只在某些情况下嘲笑合作者?
  • @jonrsharpe:我刚刚提到了我上面的实际问题陈述的简化版本。实际上,isFeesPaid() 方法需要 4 个参数,并且填充它们是一项繁琐的任务。对于我正在谈论的 2 个测试用例,这种方法并不重要。所以我试图通过模拟它来让它更简单。有意义吗?

标签: java unit-testing mocking mockito


【解决方案1】:

在这种情况下使用间谍而不是模拟。对于大多数情况,它将调用协作者的实际实现,对于这两种情况,您在调用 SUT 之前使用 //Given 部分中的 given().willReturn() 存根。

这里是我建议您使用的间谍注释的更多信息:link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2017-10-03
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多