gpt4 book ai didi

c# - 协助分类测试

转载 作者:行者123 更新时间:2023-11-30 22:29:40 25 4
gpt4 key购买 nike

我有一个我创建的 .net c# 库,我目前正在为其创建一些单元测试。我目前正在为我创建的缓存提供程序类编写单元测试。作为编写单元测试的新手,我有 2 个问题,它们是:

  1. 我的缓存提供程序类是我的分布式缓存 - AppFabric 的抽象层。因此,要测试我的缓存提供程序类的各个方面(例如添加到 appfabric 缓存、从缓存中删除等)涉及与 appfabric 通信。因此,测试这些的测试,它们仍然归类为单元测试或集成测试吗?

  2. 由于与 appfabric 交互,我正在测试上述方法,我想对这些方法计时。如果他们花费的时间超过指定的基准,则测试失败。我再问一次,这个性能基准测试可以归类为单元测试吗?

我设置测试的方式我想将所有单元测试、集成测试等包括在一起,因此我提出了这些问题,希望能提供意见。

最佳答案

  1. 这些可能会被视为集成测试,因为您不是在孤立地测试代码,而是在集成至少两个不同类的生产代码。如果您让 AppFabric 的类实现接口(interface),然后使用实现接口(interface)的 stub 和/或模拟来测试您的缓存提供程序类,那么这将被视为单元测试。

  2. Michael Feathers 在他的书中将 1/10 秒或更长的时间定义为对于单元测试来说太慢了 Working Effectively With Legacy Code ,第 13 页。虽然从技术上讲它可以作为单元测试来实现,但您可能希望将这些测试与集成测试一起运行,这也往往需要更长的时间来执行。

    原因是,如果您有数千个测试(比如 10,000 个)并且每个测试需要 1/10 秒,那么您将需要大约 17 分钟来运行它们。如果您在每次提交最新更改时都运行测试(以便在您破坏某些内容时获得快速反馈),那可能会太长。这并不意味着您不应该编写较慢的单元测试,您可能需要它们,但这只是意味着随着项目的增长,您不希望像运行较快的单元测试那样频繁地运行它们。

    如果他们花费很长时间,我也不会让他们失败,因为他们的时间可能会在某种程度上因运行而异。如果它们通常较慢,请将它们与集成测试分组。

    此外,Feathers 在第 14 页总结道:

    Unit tests run fast. If they don't run fast, they aren't unit tests.

    Other kinds of tests often masquerade as unit tests. A test is not a unit test if:

    1. It talks to a database.
    2. It communicates across a network.
    3. It touches the file system.
    4. You have to do special things to your environment (such as editing configuration files) to run it.

关于c# - 协助分类测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080225/

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