我有以下属性:
public double TotalHours
{
get
{
return (from session in sessions
let ts = session.End.Subtract(session.Start)
select ts.TotalHours).Sum();
}
}
该财产应该在所有会议中完成所有小时的总和 我需要测试什么才能确保该属性总是汇总所有会话的所有小时数?
答案 0 :(得分:4)
基本上是编制适当的样本数据的情况。例如,您可能想尝试以下测试:
也许你已经进行了其他的数据验证,以确保不会发生“狡猾的”情况,但那些是我想到的事情的种。
答案 1 :(得分:1)
我建议您模拟Session
来创建@Jon Skeet描述的测试数据。通过使用模拟,您可以将要测试的代码仅隔离到TotalHours
属性,而不是属性和Session
的实现。
使用moq,您可以执行以下操作来设置测试数据,调用TotalHours
并断言结果是您期望的值:
var data = new List<ISession>
{
Mock.Of<ISession>(s => s.Start == DateTime.Parse("12:00 AM") && s.End == DateTime.Parse("12:10 AM")),
Mock.Of<ISession>(s => s.Start == DateTime.Parse("1:00 AM") && s.End == DateTime.Parse("1:15 AM")),
Mock.Of<ISession>(s => s.Start == DateTime.Parse("2:00 AM") && s.End == DateTime.Parse("2:30 AM"))
};