就个人而言,我总是将单元测试放在一个单独的项目中,只是因为这就是MSTest的设置方式。但是我正在阅读Martin Fowler的《重构:改进现有代码的设计》,他似乎不仅主张将它们放在同一个项目中,而且也将它们与所测试的方法放在同一个类中。
老实说,我真的很难思考这与在代码本身以外的其他区域进行测试(不同于测试差异)不同的方式(测试文档还是杂乱无章?)。
是否有任何明确的理由选择一个?还是这主要是哲学上的差异?
更新:我不一定非要说服别人,但至少我知道参数是什么。我希望我可以选择每个人的答案,但是我只能选择一个。
最佳答案
拥有自测代码可能有些优雅,但是我倾向于支持与您相同的理念-代码分离胜过抽象美的概念。设计类(class)时,可以从根本上将其分为三个部分:
我认为测试用例既可以作为文档用途,又可以作为测试套件中安全网的一部分。当一个新的程序员查看您的代码时,可能在您停止处理代码很久之后,该文档很少是传达如何使用该类的最有效方法。它可以回答有关代码在特定情况下的行为的问题,提供有关类及其方法的一般概述,等等,但是测试用例提供了有关如何在实际代码中使用类的具体示例。
因此,出于这个原因,我倾向于说它们应该不属于类(class)本身,因为这加强了这种程度的分离。