c# - 对生成不同字符串的类进行单元测试

标签 c# unit-testing

我正在尝试为生成不同字符串的类编写单元测试。我最初的 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/

相关文章:

c# - 从 .jks 文件生成/转换 .keystore 文件,因为#unity 不接受 .jks

javascript - 如何在客户端呈现 WebUserControl

unit-testing - 使用 Mocha 和 Enzyme 测试使用 React CSS 模块的 React 组件

c# - 使用 Visual Studio 2010 Ultimate 模拟

C# 的滚动条装饰?

c# - 自定义 web.config 部分处理程序

c# - Win32 API GetMenuItemInfo 仅返回项目文本的第一个字符

php - Codeception 中的 Cest 格式的 @dataProvider

c# - 使用 MSTest 属性

python - 单元测试非常简单的功能