gpt4 book ai didi

unit-testing - 行为与基于状态的测试

转载 作者:行者123 更新时间:2023-12-03 11:11:32 26 4
gpt4 key购买 nike

我知道这个问题是宗教 war 的一部分,但我有以下情况:
我有一个对象,Responder调用对象 Updater 上的方法以应对不同的事件。我最近以这种方式分离测试:Updater 的基于状态的测试方法本身,以及 Responder 的基于行为的测试那叫它。也就是说,我 mock UpdaterResponder测试,只是为了确保它被调用。

我是否仍要测试应该在 Responder 中更新的对象的状态?测试而不是 mock Updater ?我喜欢我所做的,因为它需要更少的设置并且似乎可以更好地隔离测试。然而,这似乎与 Responder 的实现和预期行为相关联。至Updater .是不是太脆了?这是一个简化的例子。

最佳答案

如果我确实正确理解了您的问题,您确实需要至少两个级别的测试:

  • 单元测试,您尝试仅测试一个类并模拟所有依赖项(因此在您的情况下,需要在此处模拟 Updater)。这些测试帮助您开发代码(尤其是在您使用 TDD 的情况下),确保该类的行为符合设计,甚至记录该类的行为方式。几乎每个类(class)都应该有单元测试。但是,正如您所注意到的,即使您有 100% 的测试覆盖率,您也无法保证您的程序可以正常工作甚至启动!
  • 验收、集成和端到端测试——这些测试覆盖整个应用程序或大模块,并测试一切是否协同工作。通常,您不会在此级别使用模拟(您可能会 stub 整个模块/Web 服务,具体取决于上下文)。这些测试不必测试每一个实现细节(也不应该),因为这是通过单元测试完成的。他们确保一切都正确连接并协同工作。在您的情况下,您不会在这里 mock Updater。

  • 所以总而言之,我认为你真的需要同时做这两个来正确测试你的应用程序。

    关于unit-testing - 行为与基于状态的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514327/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com