如何测试一个空的generic.dictionary集合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何测试一个空的generic.dictionary集合?相关的知识,希望对你有一定的参考价值。

如何测试通用字典对象以查看它是否为空?我想运行一些代码如下:

while (reportGraphs.MoveNext())
{
    reportGraph = (ReportGraph)reportGraphs.Current.Value;
    report.ContainsGraphs = true;
    break;
}

reportGraph对象的类型为System.Collections.Generic.Dictionary当运行此代码时,reportGraphs字典为空,MoveNext()立即抛出NullReferenceException。如果有更高效的处理空集合的方法,我不想在块周围放置try-catch。

谢谢。

答案

如果它是一个通用字典,你可以检查Dictionary.Count。如果它为空,则计数为0。

但是,在你的情况下,reportGraphs看起来像是一个IEnumerator<T> - 你有没有理由手工列举你的收藏?

另一答案

empty字典和null之间有区别。在空集合上调用MoveNext不会导致NullReferenceException。我想在你的情况下你可以测试reportGraphs != null

另一答案

正如达林所说,reportGraphsnull,如果它抛出NullReferenceException。最好的方法是确保它永远不为null(即确保它在类的构造函数中初始化)。

另一种方法(避免显式枚举)将使用foreach语句:

foreach (KeyValuePair<Key,Value> item in reportGraphs)
{
    // do something
}

[编辑]请注意,这个例子也假设reportGraphs永远不会是null

以上是关于如何测试一个空的generic.dictionary集合?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 如何测试空的JavaScript对象?

如何测试 sqllite3 在 Python 中返回结果或为空的位置?

一个空的 tearDown 方法使 phpunit 测试通过

如何检测空的多部分数据传输

springboot 单元测试(如何使用基于web的单元测试?)

测试空的常规闭包?