有必要对一个值对象进行单元测试吗?你会怎么做呢?
以这个对象为例:
public class TeamProfile
{
public string Name { get; set; }
public int Wins { get; set; }
public int Losses { get; set; }
public int Draws { get; set; }
}发布于 2010-07-25 20:19:41
答案是一种观点。我会说不是。但是,在日常工作中确实会出现这样的问题,我理解这个问题,所以让我再给出一些意见:
我会根据具体情况来判断。如果你认为“我的单元测试例程可以全部测试”(并依赖它),并且你认为上面的例程可能会朝着更复杂的方向改变,那么答案是肯定的。像这样的问题,我有时会回答“是”,但过了一段时间才发现这真的是言过其实了。然后,在其他情况下,我会判断“哦,不,伙计,这真的是言过其实了”,但后来才发现有一个方面我从来没有想过。
如何测试?作为所有测试用例:定义输入和预期结果。设置它。把它拿过来。检查get是否为您设置的内容。
发布于 2011-06-17 16:08:49
有一篇关于值对象及其介绍和测试的优秀文章,作者是Dan Bergh Johnsson
为了清楚起见,我必须重申,给出的示例不是值对象。http://martinfowler.com/bliki/ValueObject.html
它特别是一个命令、消息或者更有可能是一个(DTO)数据传输对象,正如其他人所提到的,所提供的类没有要测试的行为。
发布于 2010-07-25 20:01:14
我不认为它本身是“必要的”,但它确实保护了您,以防您在某些时候向setter添加逻辑(例如:当尝试负的Wins/Losses/Draws时抛出异常,因为您没有使用无符号整数)。
如何测试?简单:调用setter,调用getter,验证值是否为您存储的值,或者抛出您期望的异常。
https://stackoverflow.com/questions/3329095
复制相似问题