Unit testing 单元测试连接

Unit testing 单元测试连接,unit-testing,Unit Testing,我希望将单元测试作为项目回归测试的一种手段 然而,我的问题是,这个项目基本上是一个美化的DIR命令——它对结果执行正则表达式测试和MD5过滤器,并允许指定许多条件,但整个项目都是为了处理运行它的系统的输入 我也是一个单人开发团队,我对自己编写的代码测试的价值提出了质疑 在这种情况下,单元测试值得吗?如果是这样的话,如何完成这些测试 编辑:MD5和Regex函数不是我提供的——它们分别由Crypto++库和Boost提供。因此,通过测试它们,我并没有获得多少收益。我所写的大多数代码只是将数据输入到

我希望将单元测试作为项目回归测试的一种手段

然而,我的问题是,这个项目基本上是一个美化的DIR命令——它对结果执行正则表达式测试和MD5过滤器,并允许指定许多条件,但整个项目都是为了处理运行它的系统的输入

我也是一个单人开发团队,我对自己编写的代码测试的价值提出了质疑

在这种情况下,单元测试值得吗?如果是这样的话,如何完成这些测试


编辑:MD5和Regex函数不是我提供的——它们分别由Crypto++库和Boost提供。因此,通过测试它们,我并没有获得多少收益。我所写的大多数代码只是将数据输入到库中,然后打印出结果。

在某些情况下,您所问的test after的值确实是有限的,但是从描述来看,单元测试的方法是将正则表达式测试和MD5过滤器分离到一段代码中,并抽象输入的馈送,以便在生产中它从系统馈送,并且在单元测试期间,您的测试类通过该输入

然后,收集您打算支持的不同场景的样本,并通过执行每个场景的不同单元测试将其输入


我认为,如果您必须更改代码以处理新的场景,那么单元测试的价值就会体现出来。您将确信,在进行更改时,旧的场景不会中断。

单元测试仍然可以在单人秀中提供价值。它使您对模块的功能和正确性(在某种程度上)充满信心。但是可能需要考虑一些设计因素来帮助使测试更适用于您的代码。模块化带来了很大的不同,特别是如果与某种依赖注入相结合,而不是紧密耦合。这允许协作者的测试版本用于隔离测试模块。在您的情况下,模拟文件系统对象可能会返回一组可预测的数据,因此可以评估筛选和条件代码。

在编写代码时,是否在编写过程中对其进行了测试?这些测试可以写进一个自动化的脚本中,这样当您在2个月内必须进行更改时,您就可以重新运行所有这些测试,以确保您没有倒退


根据我的经验,回归的机会会急剧增加,这取决于在完成版本1并开始编写版本2之后的时间,因为您通常会忘记它在不同条件下如何工作的细微差别—单元测试是对这些细微差别进行编码的一种方式。

对文件系统进行集成测试是值得的。只要确保它做了它需要做的事情。

回归测试的价值通常只有在自动化之后才能实现。一旦这样做了,事情就变得容易多了

这意味着您必须能够从已知的位置开始(如果您在文件上生成MD5,则每次都必须从相同的文件开始)。然后获得一次成功的运行,您可以在其中保存输出-这就是基线

从那时起,回归测试就是一项简单的工作。开始测试,收集输出并将其与已知基线进行比较(当然,如果输出发生更改,则需要手动检查,或者在将其保存为新基线之前使用另一个独立脚本进行检查)

请记住,回归测试的思想是捕获新代码(即,回归软件)引入的任何错误。这不是为了测试新代码的功能

即使是作为一个人的开发团队,自动化程度越高越好

  • 单元测试在单人商店场景中有价值吗?绝对有价值!没有什么比完全自信地重构代码更好了,因为你没有破坏任何东西

  • 如何进行单元测试?模拟系统调用,然后测试其余逻辑

  • 在这种情况下,单元测试值得吗

    不一定:特别是对于一个人的团队,我认为对比“单元”更大的东西进行自动化测试就足够了。。。有关详细信息,请参见“

    我对自己编写的代码的测试的价值提出了质疑


    好吧,现在是这样,但一年后将是你,一个更有经验的开发人员,开发你现在编写的软件,一个经验更少、知识更少的开发人员(相比之下)。你不想让那个经验不太丰富的家伙(你一年前)写的代码经过适当的测试,这样你就可以自信地进行更改,而不会出现任何问题吗?

    Billy,对我来说,这似乎更像是一个语言不可知的问题,除非你特别问一个C++的测试框架。ReGEX和MD5函数是由库提供的——我没有写这些。而且,我现在看到的主要原因是我想重新构造一大块我的代码。然后你需要单元测试来确保重构没有破坏你的代码。然后,您可以增强、修复由于更改了功能而想要中断的测试;然后,您可以使用修改后的单元测试再次重构。重复-这是很有价值的。另外,还记得Knuth是如何进入测试(TEX)的。他把自己放在最丑陋、最卑鄙的心态中,用嵌套在其他复杂结构中的复杂结构抨击代码,在任何地方制造邪恶。但是在代码通过测试后,他有足够的信心声称他已经从TEX中删除了最后一个bug——它按照设计工作。@BillyONeal,您想要重构一大块代码这一事实也是一个很好的测试候选者——您将知道重构并没有改变行为。你喜欢什么