繁体   English   中英

如何在C#中对算法进行单元测试?

[英]How do you unit test an algorithm in C#?

我遇到了一个我不确定如何测试的情况:算法。 具体来说,我正在尝试编写Adler32方法并为其创建单元测试,但此时我碰到了一堵砖墙。

我的第一次尝试最终成为我的方法中相同代码的缩短版本,这似乎是非常错误的。 我的下一次尝试是有一个输入值表和预期结果,然后将预期结果与实际结果进行比较......这似乎是一个好主意,直​​到我意识到我知道如何填充此表的唯一方法是运行算法。 所以我几乎陷入困境。 如何在不进行单元测试(直接或间接)重用算法的情况下对单元测试算法进行单元测试?

如您所述,使用输入表和已知输出表。 您需要从您知道准确的来源获取相同算法的另一个实现的输出。

如果您正在实现一个没有现成输入/输出数据的算法,那么以另一种方式重新实现算法,例如在Excel中,并生成您知道准确的数据。 我们经常使用报告的统计计算来我们可以在Excel中轻松生成数据。

如果我们要谈论单元测试,因为您想为一个方法/类提供测试,您必须提供输入并验证算法的结果。

由于您的算法进行了一些默认情况下无法信任的计算(这是测试点),您需要根据常量值验证结果。 例如,您提供5并且您的方法返回17 哪个好或不好 - 你的测试通过或失败。

哪里可以得到17 使用纸和笔,在线计算网站,您可以信任的任何方式。

测试,尤其是单元测试,必须简单且轻便 您不应该提供一些替代方法来计算结果并根据生产代码对结果进行验证。 这种方法为您带来两种不同的实现,您必须维护,重构等。

显然,您可以提供输入表和预期输出,而不仅仅是517

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM