我有一小部分工作正常的单元测试,直到我添加一个测试来验证我的唯一约束是否正常工作。这些不是真正的单元测试,它们是集成测试。
无论如何,如果我省略了验证唯一约束的测试,那么删除一切都很好。但是,如果我添加 SerialNumberUniqueConstraint_Test 方法,它会失败并且我的项目类不为空,因为删除永远不会发生。如果我将 SerialNumberUniqueConstraint_Test 移动到其他测试之前,则后续测试也会失败并出现相同的 UniqueFieldValueConstraintValidationException。我做错了什么?
[TestMethod]
[ExpectedException( typeof( UniqueFieldValueConstraintViolationException ) )]
public void SerialNumberUniqueConstraint_Test()
{
using( var logic = new ItemLogic() )
{
logic.Save( CreateItem() );
}
}
[TestMethod]
public void DeleteItem_Test()
{
Item item = null;
using( var logic = new ItemLogic() )
{
logic.Delete( SerialNumber );
}
using( var logic = new ItemLogic() )
{
item = logic.Retrieve( SerialNumber );
}
Assert.IsNull( item );
}
private Item CreateItem()
{
return new Item { Name = "My item", Make = "make", Model = "model", SerialNumber = "1234" };
}
public Item Save( Item item )
{
Db4oDatabase.Database.Store( item );
Db4oDatabase.Database.Commit();
return this.Retrieve( item.SerialNumber );
}
public Item Retrieve( string serialNumber )
{
Item item = (from i in Db4oDatabase.Database.AsQueryable<Item>()
where i.SerialNumber == serialNumber
select i).FirstOrDefault();
return item;
}
public void Delete( string serialNumber )
{
Db4oDatabase.Database.Delete( this.Retrieve( serialNumber ) );
}