当前位置:  开发笔记 > 编程语言 > 正文

单元测试构造函数是否重要?

如何解决《单元测试构造函数是否重要?》经验,为你挑选了5个好方法。

我应该对单元测试构造函数吗?说我有这样的构造函数:

IMapinfoWrapper wrapper;
public SystemInfo(IMapinfoWrapper mapinfoWrapper)
{
    this.wrapper = mapinfoWrapper;
}

我是否需要为这位建筑师编写单元测试?我没有包装器变量的任何getter,所以我不需要测试它.



1> yfeldblum..:

单元测试是关于测试对象的公共状态,行为和交互.

如果您只是在构造函数中设置一个私有字段,那么有什么要测试的?

不要打扰单元测试你的简单访问器和mutator.那太傻了,对任何人都没有帮助.


例如,如果构造函数具有if(条件),则需要测试两个流(true,false).如果你的构造函数在设置之前做了某种工作.你应该检查工作是否完成.
如果你在构造函数中有一个`checkArgumnt`(也许是为了测试对象是否为空)怎么办?值得测试吗?

2> Brian Genisi..:

是.如果构造函数中有逻辑,则应测试它.简单地设置属性不是逻辑IMO.条件,控制流等IS逻辑.

编辑: 您应该测试IMapinfoWrapper何时为null,如果需要该依赖项.如果是这样,那么这就是逻辑,你应该有一个测试来捕获你的ArgumentNullException或者其他......你的测试是定义代码行为方式的规范.如果它抛出ArgumentNullException,那么应该在测试中指定.


我从来没有在构造函数中加入任何逻辑.只是二传手.

3> John Sonmez..:

问:如果要在构造函数中设置成员变量,为什么要设置它.

答:因为你有一个失败的单元测试,只能通过在构造函数中设置它来传递.

如果您使用此逻辑,只编写代码以使单元测试通过(测试驱动开发),那么您已经有了问题的答案.



4> Draemon..:

不会.它的功能将通过课堂上的每个其他单元测试进行测试.


并非每一个,如果里面有几个构造函数或几个控制流.

5> 小智..:

你绝对应该测试构造函数.如果您有默认构造函数,则应测试是否可以调用它.如果稍后更改类会怎么样 - 也许它会变成单例或删除默认构造函数而不是需要参数?在这种情况下,测试应该失败以警告该更改(以便可以修复类或测试以满足新要求).

默认构造函数的存在是应该进行测试的要求.即使所有构造函数都设置了将在其他地方测试的私有成员,也应测试存在无参数构造函数的事实.

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