【问题标题】:Unit test to check uniqueness of 1 million generated strings用于检查 100 万个生成字符串的唯一性的单元测试
【发布时间】:2015-06-28 17:53:05
【问题描述】:

我想写一个单元测试来

  1. 查看包含 100 万个唯一随机生成的字符串的列表。

  2. 确保每个数字都是 100% 唯一的,并且没有重复。

检查和比较没有重复项的最佳方法是什么?

【问题讨论】:

  • 根据您要生成唯一字符串的其他问题。仅仅因为一组 100 万是唯一的,并不意味着下一组 100 万将是唯一的,甚至 100 万和 1 也将是唯一的。我不明白这怎么可能是一个有效的单元测试。

标签: c# .net unit-testing random tdd


【解决方案1】:

您可以使用LINQ Distinct() method。它很可能使用散列,并且在性能上接近于任何手卷。关于性能的一些信息here

【讨论】:

    【解决方案2】:

    当您提到“单元测试”时,您通常指的是您将定期运行的测试,以确保您的代码即使在您更改了部分代码后也能继续正常工作。您在这个问题中所要求的似乎更多的是验证某些字符串集实际上是唯一的,而不是生成它们的代码正确地确保了唯一性。从编程的角度来看,更好的方法是进行单元测试,以验证确保唯一性的代码是否正常工作。这可能应该是一个类似于wouldBeUniqueInSet(String newString, Set<String> existingSet) 的方法,为了测试该方法是否正常工作,您可能希望使用集合中已经存在的字符串运行它并期望它返回false,并且有一个不在集合中的集合,并期望它返回true。这些是我们通常使用的术语意义上的单元测试。

    【讨论】:

      【解决方案3】:

      如果目标是构建列表后的最佳性能,则对列表进行排序并检查重复项。

      【讨论】:

        猜你喜欢
        • 2014-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 2022-01-11
        • 2011-10-31
        • 2015-09-09
        • 1970-01-01
        • 2021-05-09
        相关资源
        最近更新 更多