![]() |
1
9
如果我正确理解了你的问题,你至少需要两个级别的测试:
所以,总而言之,我认为您确实需要同时进行这两项工作,才能正确地测试您的应用程序。 |
![]() |
2
0
我想这取决于你想测试什么/如何测试。 如果在更新程序类中没有任何依赖项,那么除了在调用被测试方法后测试它的状态之外,没有其他方法。如果存在某种依赖关系,您可以测试它的行为,以确定它应该做什么(在其他类上调用其他方法) 另一种方法也适用于响应程序类。你可以测试它的状态,或者像刚才那样测试它的行为。测试它的状态时,您可能会使用更新程序的实际实现,而不是模拟它,或者在只做最少的地方使用存根。 当主要测试行为和模拟很多东西时,更需要进行验收(回归/集成/端到端)测试来备份单元测试,就像grzenio提到的那样。(他似乎是个“模仿者”(行为)测试者) 在大多数情况下进行基于状态的测试时,您会使用更真实的实现及其交互,而备份这些实现的需要就不那么重要了。但这绝不是完全丢弃它们的方法,只是您的测试中已经有了一些回归/集成。 我认为你不应该把测试分成太多的部分,因为这可能会使事情更容易陷入裂缝之中。 免责声明:我不是TDD专家,我不主张一个比另一个。关于经典vs行为的好信息可以在网上找到。马丁·福勒在这个问题上有一个很好的起点: Mocks Aren't Stubs 我目前正在阅读不断增长的面向对象软件,在测试的指导下,我倾向于模仿围墙的一面。但我认为两边都有一个小的灰色区域。 |
![]() |
Phil Gunning · 使用嵌套函数更改进行模拟测试 2 年前 |
![]() |
Korr · 如何用Jest模拟组件测试中服务的功能 2 年前 |
![]() |
Jordan Lee · 在另一个类中使用实例方法作为装饰器 6 年前 |
![]() |
user2350138 · 为WireMock构建Java项目 6 年前 |
|
user8584384 · 单元测试不起作用,因为导入的文件作为输入 6 年前 |
![]() |
Vino · 如何模拟Python类的对象? 6 年前 |
![]() |
Enrico · .NET核心ASP。带有会话和测试的NET控制器 6 年前 |