相关疑难解决方法(0)

在xUnit中验证集合大小的惯用方法是什么?

我在我的测试套件中有一个类似这样的测试:

[Fact]
public void VerifySomeStuff()
{
    var stuffCollection = GetSomeStuff();

    Assert.Equal(1, stuffCollection.Count());
}
Run Code Online (Sandbox Code Playgroud)

这个测试按照我的预期工作,但是当我运行它时xUnit会输出一个警告:

警告xUnit2013:不要使用Assert.Equal()来检查集合大小.

但是,警告中没有建议替代方案,谷歌搜索会将我带到xUnit中的源代码,以便验证是否打印了此警告.

如果Assert.Equal()不是验证集合长度的正确方法,那是什么?


澄清一下:我意识到我可以通过例如提取变量或使用Assert.True(stuff.Count() == 1)替代来"欺骗"xUnit而不发出此警告.后者只是hacky,而前者感觉就像xUnit试图避免多次迭代一样IEnumerable<T>,那么这是错误的方法(因为我会分别得到编译器提示,如果这是一个问题),并且xUnit本身不应该多次评估输入(事实上,无论变量提取如何,它都可能获得相同的输入,因为C#函数调用的工作方式).

所以,我不仅仅想从我的输出中删除该警告.我的问题的答案也解释了为什么首先将警告包含在库中,以及为什么我应该使用的方法更好.

c# xunit xunit.net

83
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×1

xunit ×1

xunit.net ×1