当前位置:  开发笔记 > 程序员 > 正文

单元测试指南

如何解决《单元测试指南》经验,为你挑选了1个好方法。

有谁知道在哪里可以找到单元测试指南和建议?我想要一些解决以下类型主题的东西(例如):

测试应该与应用程序逻辑在同一个项目中吗?

我应该有测试类来镜像我的逻辑类,还是应该只有我认为需要的测试类?

我应该如何命名我的测试类,方法和项目(如果他们进入不同的项目)

是应该测试私有,受保护和内部方法,还是只测试可公开访问的方法?

单元和集成测试应该分开吗?

是否有充分的理由不进行100%的测试覆盖?

我不应该问我应该怎么做?

在线资源最好.



1> Josh..:

我会推荐Kent Beck关于TDD 的书.

此外,你需要去Martin Fowler的网站.他也有很多关于测试的好信息.

我们在TDD上非常重要,所以我将从这个角度回答这些问题.

测试应该与应用程序逻辑在同一个项目中吗?

通常我们将测试保存在同一个解决方案中,但我们将测试分解为单独的DLL /项目,这些DLL /项目镜像他们正在测试的DLL /项目,但是维护命名空间,测试位于子命名空间中.示例:Common/Common.Tests

我应该有测试类来镜像我的逻辑类,还是应该只有我认为需要的测试类?

是的,应该在创建任何类之前创建测试,并且根据定义,您应该仅隔离测试单个单元.因此,您应该为解决方案中的每个类设置一个测试类.

我应该如何命名我的测试类,方法和项目(如果他们进入不同的项目)

我想强调行为是正在测试的,所以我通常在SUT之后命名测试类.例如,如果我有一个User类,我会将测试类命名为:

public class UserBehavior

应该命名方法来描述您期望的行为.

public void ShouldBeAbleToSetUserFirstName()

可以根据需要命名项目,但通常您希望项目正在测试哪个项目.请参阅有关项目组织的先前答案

是应该测试私有,受保护和内部方法,还是只测试可公开访问的方法?

您再次希望测试断言预期的行为,就像您是被测对象的第三方使用者一样.如果您测试内部实现细节,那么您的测试将是脆弱的.您希望测试为您提供重构的自由,而不必担心破坏现有功能.如果您的测试了解实施细节,那么如果这些细节发生变化,您将不得不更改测试.

单元和集成测试应该分开吗?

是的,单元测试需要与验收和集成测试隔离开来.关注点的分离也适用于测试.

是否有充分的理由不进行100%的测试覆盖?

我不会挂掉100%的代码覆盖率.100%的代码覆盖率往往意味着测试中的某种程度的质量,但这是一个神话.你可以进行可怕的测试,但仍能获得100%的覆盖率.我宁愿依靠良好的Test First心态.如果您在编写一行代码之前总是编写测试,那么您将确保100%的覆盖率,因此它变得没有实际意义.

一般来说,如果你专注于描述课程的完整行为范围,那么你将无需担心.如果你将代码覆盖率作为度量标准,那么懒惰的程序员只会做足够的事情来满足那个标记,你仍然会有糟糕的测试.相反,在很大程度上依赖同行评审,同时评估测试.

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