当前位置:  开发笔记 > 运维 > 正文

你如何应对失败的单元测试?

如何解决《你如何应对失败的单元测试?》经验,为你挑选了2个好方法。

我在解决方案文件中有许多项目,这些项目都为它们编写了单元测试,我希望将它们设置为由我们的持续集成服务器运行.但是,由于许多测试写得不好而且没有经常运行,因此有许多测试失败了.

我目前没有时间修复所有测试,但我相信现有测试运行是有价值的.处理失败的单元测试的最佳方法是什么?

我目前正在做的是将每个失败的测试标记为Explicit并留下TODO评论.

[Test, Explicit] //TODO: Rewrite this test because it fails

有没有更好的方法呢?或者我应该在将它们包含在CIS运行的测试之前修复所有测试吗?



1> krosenvold..:

由于你有一个正在运行的自动构建(带有测试失败通知!),这听起来像是每天5天的时间(从ubuntu社区免费):

在每个失败的测试方法中插入以下(伪代码):

if  ( DateTime.now < new DateTime(2008, 12, 24, 11, 00, 00)) return;

您每5次插入此声明,您需要提前一个工作日.在您可能有时间修复测试的某个时间设置时间.

当工作日到来时,您可以修复或删除它.



2> Jon Limjap..:

好吧,在NUnit中,您可以选择使用ignore属性忽略测试:

[Test, Ignore("Test needs rewrite")]

就个人而言,我对这些测试做了两件事:

如果我不理解测试,或者测试是否过时/与当前规格不同步,请删除它们

如果修复很简单,请将其重构为正确的规范

从你所写的内容中收集我会怀疑许多失败的测试已经过时,并且可能首先不相关,所以我认为删除它们会很好.

无论如何,保持无人理解的测试毫无意义.

更新:Oren Eini有一篇博文,其中概述了我对激活旧的失败测试的大部分看法:

测试本身没有任何价值:我最成功的项目没有任何测试

报价:

测试是一种工具,在将其应用于项目之前,应根据通常的指标评估其使用情况.有许多理由不使用测试,但大多数原因归结为:"它们会给过程带来摩擦".

如果改造旧的,失败的测试会给过程带来摩擦,可能根本不值得更新它们.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有