C# 对不存在的Id进行单元测试有意义吗
将一个不存在的唯一Id传递给我的C# 对不存在的Id进行单元测试有意义吗,c#,unit-testing,integration-testing,C#,Unit Testing,Integration Testing,将一个不存在的唯一Id传递给我的GetXX方法以期望创建一个没有任何计数的列表有意义吗?我的意思是,当我测试一个现有的Id时,列表是独立于它所持有的项目数量而创建的。如果我传递了一个不存在的id,为什么列表应该是空的或者没有计数=0?我不确定这次考试的意义 [Test] public void Get_Teststeps_By_UnitId_Not_Existing() { // ARRANGE ITeststepDataProvider provider = new Tests
GetXX
方法以期望创建一个没有任何计数的列表有意义吗?我的意思是,当我测试一个现有的Id时,列表是独立于它所持有的项目数量而创建的。如果我传递了一个不存在的id,为什么列表应该是空的或者没有计数=0?我不确定这次考试的意义
[Test]
public void Get_Teststeps_By_UnitId_Not_Existing()
{
// ARRANGE
ITeststepDataProvider provider = new TeststepDataProvider(_connectionString);
int unitId = 100;
// ACT
List<Teststep> units = provider.GetTeststepsByUnitId(unitId);
// ASSERT
Assert.IsNotNull(units);
Assert.Count(0, units);
}
[测试]
public void Get_Teststeps_By_UnitId_Not_Existing()
{
//安排
ITeststepDataProvider provider=新的TeststepDataProvider(\u connectionString);
int unitId=100;
//表演
List units=provider.getteststepsbynitid(unitId);
//断言
Assert.IsNotNull(单位);
Assert.Count(0,单位);
}
这在很大程度上取决于被测系统、它应该做什么以及如何定义。例如,如果您定义要测试的方法不应返回空值,而应为某些给定输入返回空集合(例如不存在的ID-无论这意味着什么),那么测试这种情况和方法的正确行为是非常有意义的。这在很大程度上取决于被测系统,它应该做什么以及如何定义。例如,如果您定义您正在测试的方法不应返回空值,而应为某些给定输入(例如不存在的ID-无论这意味着什么)返回空集合,那么测试这种情况和方法的正确行为是非常有意义的。我认为否定测试是可以执行的有效测试。我想它是否应该有一个0的计数并且不应该为null取决于应用程序正在尝试完成什么。不过,作为一项规则,您希望测试消极案例和积极案例一样多。我认为消极测试是一项有效的测试。我想它是否应该有一个0的计数并且不应该为null取决于应用程序正在尝试完成什么。不过,通常情况下,您希望测试否定的情况和肯定的情况一样多。单元测试不仅仅是验证GetXX方法,就像现在一样(尽管测试该方法是否做了您认为它做的事情,即使它很简单,也不会有任何伤害),它还可以防止任何人在以后更改/重构代码时意外更改会导致其他代码中断的内容。如果您依赖于某个行为,那么您应该始终确保对其进行测试,无论它多么简单
换句话说,不要因为现在没有意义而跳过一个测试,考虑一下以后的维护,并且该测试实际上为方法用户提供了关于该方法应该如何使用和/或不使用的良好文档。单元测试不仅仅是验证GetXX方法现在的状态(尽管测试该方法是否做了您认为它做的事情(即使它很简单)不会有什么坏处,但它也可以防止任何人在以后更改/重构代码时意外更改某些会导致其他代码中断的内容。如果您依赖某个行为,则应始终确保对其进行测试,无论多么简单
换句话说,不要因为现在没有意义而跳过一个测试,考虑一下以后的维护,测试实际上为方法的用户提供了关于如何使用和/或不使用该方法的良好文档。如果您的代码调用总是期望
GetXX()
若要返回列表的实例,您应该对其进行测试。这将确保有人无法更改GetXX()
代码并使其返回null
,然后导致系统中出现NullReferenceException
异常。如果您的代码调用始终需要GetXX()
若要返回列表的实例,则应对其进行测试。这将确保有人无法更改GetXX()
代码并使其返回null
,然后导致系统中出现NullReferenceException
s