gpt4 book ai didi

unit-testing - 我如何真正进行单元测试代码?

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

我正在阅读Joel Test 2010,它使我想起了单元测试的问题。

我如何真正对某项进行单元测试?我没有单元测试功能吗?只有全类?如果我有15个课<20行怎么办?我是否应该为每个类编写35行单元测试,将15 * 20行转换为15 *(20 + 35)行(从300到825,几乎增加了3倍的代码)。

如果模块中只有两个其他类使用一个类,则应该对该单元进行单元测试,还是对其他两个类进行测试就足够了?如果它们都小于30行代码怎么办?

如果我编写代码以转储数据,而我再也不需要读取它,例如使用另一个应用程序。另一个应用程序不是命令行,或者不是,但是无法验证数据是否良好。我还需要进行单元测试吗?

如果该应用程序是一个实用程序,并且总计少于500行代码,该怎么办。或在该周使用,将在将来使用,但始终需要重新配置,因为这意味着快速批处理,并且每个项目都需要进行调整,因为期望的输出没有改变。 (我试图说没有办法解决,出于正当的原因,它总是会被调整)我是否对其进行单元测试? (也许我们不在乎是否破坏了过去而不是现在或将来使用的功能)。

等等

我认为这应该是Wiki。也许人们想确切地说出他们应该进行单元测试的内容(或不应该进行测试)?也许到书的链接很好。我尝试了一个,但是它从未明确说明应该进行单元测试的内容,仅是编写单元测试和解决方案的问题。

另外,如果只打算将类放在该项目中(通过设计,规范或任何其他原因),并且该类本身不是有用的(可以说它使用返回html就绪注释的数据生成html),我真的需要对其进行测试吗?通过检查所有公共(public)函数是否在我的项目从未使用空注释时允许空注释对象来表示。它使我想知道我是否在对错误的代码进行单元测试。在项目进行时,也将大量的类丢弃。它的边界扔掉或不是很有用的单独代码使我感到困扰。

最佳答案

无论您是否这样说,这都是我所听到的:大量的问题和借口说明为什么单元测试可能不适用于您的代码。换句话说:“我看不到从单元测试中得到什么,它们写起来很麻烦;也许它们不适合我?”

你知道吗?你或许是正确的。单元测试不是万能的。有大量的测试是单元测试无法涵盖的。

不过,我认为您是在错误估计维护成本以及代码中可能发生的事情。所以这是我的想法:

  • 我应该测试小类吗?是的,如果该类中的某些内容可能会中断。
  • 我应该测试功能吗?是的,如果此函数中的某些内容可能会中断。你为什么不呢?还是您担心它是否被视为一个单元?那只是在争论名字,对您是否应该为此编写单元测试没有任何关系!但是以我的经验来看,通常将一种方法或功能描述为被测单元。
  • 如果另外两个类正在使用一个类,是否应该对它进行单元测试?是的,如果有什么可能会破坏该类(class)。我应该单独测试吗?这样做的好处是能够将中断直接隔离到共享类,而不是遍历使用类以查看是它们中断了还是它们的依赖项之一。
  • 如果另一个程序可以读取我的类的数据输出,是否应该对其进行测试? hell 是,特别是如果该其他程序是第三方程序!这是单元测试(或系统测试,取决于测试涉及的隔离度)的绝佳应用:证明自己输出的数据正是您认为应该输出的数据。我想您会发现它具有极大地简化支持电话的功能。 (尽管请注意,它不能代替该客户端的良好接受测试。)
  • 我应该测试一次性代码吗?可能吧。追求TDD策略会更快地将您的一次性代码发布出去吗?它可能。具有可以适应新约束的可靠的单元测试块是否会减少丢弃代码的需要?也许。
  • 我应该测试不断变化的代码吗?是。只要确保所有适用的测试都已更新并通过!毕竟,不断变化的代码特别容易出错,而进行安全更改是单元测试的另一大好处。另外,它可能会给您的不变代码带来负担,使其变得尽可能健壮,以实现这种变化速度。而且您知道如何使自己的代码片段是否健壮...
  • 我应该测试不再需要的功能吗?不,您可以删除测试,也可能删除代码(当然,请进行测试以确保您没有破坏过程中的任何内容!)。不要丢下单元测试,特别是如果测试不再起作用或无法运行,或者组织中的人员将离开单元测试,并且您将失去 yield 。我已经看到了这种情况。不好看
  • 我是否应该测试即使在项目上下文中编写的代码也不会被我的项目使用?取决于项目的可交付成果以及项目的优先级。但是,您确定项目之外的人都不会使用它吗?如果他们不这样做,而您却不这样做,那么可能只是死代码,在这种情况下,请参见上文。从我的 Angular 来看,如果我的测试没有涵盖其所有重要功能,那么无论项目是否使用了所有功能,我都不会觉得自己完成了一个完整的类(class)。我喜欢感觉很完整的类(class),但我会注意不要过度设计一堆我不需要的东西。如果我将某些内容放在类里面,那么我打算使用它,因此将要确保它能正常工作。对我来说,这是个人素质和满意度的问题。
  • 关于unit-testing - 我如何真正进行单元测试代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222096/

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