gpt4 book ai didi

frameworks - 模拟框架和高测试覆盖率重要吗?

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

模拟框架,例如EasyMock,使插入虚拟依赖项更容易。话虽如此,使用它们来确保如何调用特定组件上的不同方法(以及以什么顺序)对我来说似乎很糟糕。它将行为暴露给测试类,这使得维护生产代码变得更加困难。而且我真的没有看到好处;在精神上,我觉得我被束缚在一个沉重的球上。

我更喜欢只针对接口(interface)进行测试,将测试数据作为输入并断言结果。更好的是,使用一些自动生成测试数据的测试工具来验证给定的属性。例如将一个元素添加到列表中,然后立即删除它会产生相同的列表。

在我们的工作场所,我们使用提供测试覆盖率的 Hudson。不幸的是,很容易盲目地痴迷于一切都经过测试。我强烈认为,如果一个人想要在维护模式下也有生产力,那么不应该测试所有东西。一个很好的例子是 Web 框架中的 Controller 。通常它们应该包含很少的逻辑,在我诚实的意见中,使用 Controller 以特定顺序调用某某方法的模拟框架进行测试是荒谬的。

亲爱的SOers,您对此有何看法?

最佳答案

我读了2个问题:

您对测试以特定顺序调用组件上的特定方法有何看法?

我过去就犯了这个罪。这些天我们使用更多的“ stub ”和更少的“ mock ”。
我们尝试编写只测试一件事的单元测试。当我们这样做时,通常可以编写一个非常简单的测试
与大多数其他组件的交互。而且我们很少断言排序。这有助于使测试不那么脆弱。

只测试一件事的测试更容易理解和维护。

此外,如果您发现自己必须为与大量组件的交互编写大量期望,那么您正在测试的代码很可能存在问题。如果很难维护测试,那么通常可以重构您正在测试的代码。

是否应该沉迷于测试覆盖率?

在为给定类编写单元测试时,我非常痴迷于测试覆盖率。它可以很容易地发现我没有测试过的重要行为。我还可以判断我不需要覆盖哪些位。

整体单元测试覆盖率统计?只要他们很高,就不是特别感兴趣。

整个系统的 100% 单元测试覆盖率?一点都不感兴趣。

关于frameworks - 模拟框架和高测试覆盖率重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601913/

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