MbUnit Assert.AreEqual DateTime和Decimal不等于

时间:2011-01-05 14:19:07

标签: c# unit-testing mbunit

我有这样的类结构

public class Entity
{
    public int Id { get; set; }
    public string Label { get; set; }
    public string Description { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime ModifiedAt { get; set; }
    public DateTime? DeletedAt { get; set; 
}

我填充所有属性并将其保存到DB,之后我从DB获取此对象

var entity = CreateEntity()
SaveToDB(entity);
var entityFromDb = GetFromDB();

并尝试以这种方式比较值

Assert.AreEqual(entity, entityFromDb);

并且DateTime和Decimal值的比较是faild

预期值相等。

预期价值: Id = 28, CreatedAt = 2011-01-05T14:06:32。 6874218Z , DeletedAt = null, Description =“描述”, 持续时间= 2000米, Label =“测试实体”, ModifiedAt = 2011-01-05T14:06:32。 6874218Z

实际价值: Id = 28, CreatedAt = 2011-01-05T14:06:32。 0000000 , DeletedAt = null, Description =“描述”, 持续时间= 2000.00000m , Label =“测试实体”, ModifiedAt = 2011-01-05T14:06:32。 0000000

我可以用某种方式比较这些值,但不对每个字段进行比较

1 个答案:

答案 0 :(得分:3)

一个选项是更改DateTimes的setter,以便它们在那时执行截断 - 基本上问题是你的DB没有存储亚秒精度,所以在实体中也没有它是合理的。

我希望十进制值已经相等,即使它们具有不同的存储精度。 (1.000m和1.0m有不同的表示,但被认为是相同的。)