我正在尝试为生成不同字符串的类编写单元测试。我最初的 react 如下:
public void GeneratedStringsShouldBeDistinct()
{
UniqueStringCreator stringCreator = new UniqueStringCreator();
HashSet<string> generatedStrings = new HashSet<string>();
string str;
for (int i = 0; i < 10000; i++)
{
str = stringCreator.GetNext();
if (!generatedStrings.Add(str))
{
Assert.Fail("Generated {0} twice", str);
}
}
}
我喜欢这种方法,因为我知道底层算法没有使用任何随机性,所以我不会遇到一次失败但下一次成功的情况 - 但将来可能会被某人替换掉. OTOH,测试任何随机算法都会导致这种类型的测试不一致,那么为什么不这样做呢?
我是否应该只取出 2 个元素并检查差异性(使用 0/1/Many 原理)?
还有其他意见或建议吗?
最佳答案
我会继续使用您的方法;这可能是最可靠的选择。
顺便说一句,你不需要 if
语句:
Assert.IsTrue(generatedStrings.Add(str), "Generated {0} twice", str);
关于c# - 对生成不同字符串的类进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3310279/