【问题标题】:Should I test all methods with Integration Tests?我应该使用集成测试测试所有方法吗?
【发布时间】:2021-12-14 16:38:37
【问题描述】:

我对集成测试有疑问,例如:

我有一个类叫Service,Service有三个方法:

public doSomething();
protected retriableUpdate();
protected update();

doSomething() 方法是公共的,其他的都是从它调用的,但只有 update() 是真正发生集成时的方法。

那么,在集成测试场景中,我应该只测试 doSomething()、只测试 update() 还是所有三个方法?

提前谢谢!

【问题讨论】:

  • 单元测试应该单独测试所有三个。集成测试应该只测试面向外部的功能(您测试的是系统,而不是单个类)。
  • @GreenCloakGuy 因此,例如,在测试 S3 上传文档时,在我的 IT 上,我必须在发生上传/删除时测试该方法,如果是数据库,我必须仅测试该方法,实际上是在那个数据库上查询。对吗?

标签: java integration-testing


【解决方案1】:

无论是集成测试还是单元测试,都无关紧要。您应该只测试您的公共方法,并避免直接测试其他方法。它们应该通过公共方法的测试进行测试。

集成测试和单元测试之间的区别在于,通常,您希望单元测试能够测试最多(如果不是全部)业务逻辑,而对于集成测试,您可能会考虑只测试更重要/更复杂的用例。原因是集成测试比单元测试更难设置,运行速度也更慢,因此通常你会希望有更多的单元测试。甚至还有一个叫做 The Test Pyramid 的东西,它告诉你应该考虑在你的代码中包含多少测试类型(“服务测试”==“集成测试”):

(取自https://martinfowler.com/articles/practical-test-pyramid.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    相关资源
    最近更新 更多