C# MbUnit Assert.AreEqual DateTime和Decimal不相等
我有一个这样的班级结构C# MbUnit Assert.AreEqual DateTime和Decimal不相等,c#,unit-testing,mbunit,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 Da
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;
}
我填充所有属性并将其保存到数据库中,然后从数据库中获取该对象
var entity = CreateEntity()
SaveToDB(entity);
var entityFromDb = GetFromDB();
并尝试用这种方式比较这些值
Assert.AreEqual(entity, entityFromDb);
DateTime和十进制值的比较失败
期望值相等
期望值:
Id=28,
CreatedAt=2011-01-05T14:06:32.6874218Z,
DeletedAt=null,
Description=“Description”,
持续时间=2000米,
Label=“测试实体”,
修改日期=2011-01-05T14:06:32.6874218Z
实际值:
Id=28,
CreatedAt=2011-01-05T14:06:32.0000000,
DeletedAt=null,
Description=“Description”,
持续时间=2000.00000米,
Label=“测试实体”,
ModifiedAt=2011-01-05T14:06:32.0000000
我可以用某种方式比较这些值,但不必对每个字段进行比较,一个选项是更改日期时间的设置器,以便它们在该点执行截断-基本上,问题是您的数据库没有存储亚秒精度,因此在实体中也没有它似乎是合理的
我希望十进制值已经被比较为相等,即使它们具有不同的存储精度。(1.000m和1.0m具有不同的表示形式,但被视为相等。)一个选项是更改日期时间的设置器,以便它们在该点执行截断-基本上,问题是您的DB没有存储亚秒精度,因此在实体中也不使用它似乎是合理的 我希望十进制值已经被比较为相等,即使它们具有不同的存储精度。(1.000m和1.0m有不同的表示,但被视为相等。)