Visual Studio 2013 在显示此对象的代码覆盖率时(为了简化此示例),缺少一个块:
据我所知,那个 if
应该有两种状态。通过和失败。而调试我的测试表明,每个条件都被执行一次。具体来说,这两个测试如下:
[TestMethod]
public void CanNotHaveNegativeServiceWindow()
{
// arrange
var request = new CreateCaseRequest
{
ServiceWindowStart = new DateTime(2014, 12, 31, 12, 00, 00),
ServiceWindowEnd = new DateTime(2014, 12, 31, 11, 00, 00)
};
// act
var result = request.GetValidationErrors();
// assert
Assert.AreEqual(1, result.Count());
}
[TestMethod]
public void CanHaveServiceWindow()
{
// arrange
var request = new CreateCaseRequest
{
ServiceWindowStart = new DateTime(2014, 12, 31, 11, 00, 00),
ServiceWindowEnd = new DateTime(2014, 12, 31, 12, 00, 00)
};
// act
var result = request.GetValidationErrors();
// assert
Assert.AreEqual(0, result.Count());
}
有一个测试验证了特定的 if
条件的正结果,另一个测试验证了负结果。那么哪个块没有被覆盖?我是否遗漏了某个逻辑条件?
if
。如果它们都相等,那么这就是if
的错误条件,不是吗?也就是说,与任何其他错误条件没有区别? - Davidif (ServiceWindowStart.Value > ServiceWindowEnd.Value)
吗? - Sergey Kalinichenko