我想为生成不同字符串的类编写单元测试。我最初的反应是以下几点:单元测试生成不同字符串的类
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 /许多哲学)?
还有其他意见或建议吗?