Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对不存在的Id进行单元测试有意义吗_C#_Unit Testing_Integration Testing - Fatal编程技术网

C# 对不存在的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

将一个不存在的唯一Id传递给我的
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