Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nunit单元测试随机数_C#_Unit Testing_Random_Nunit - Fatal编程技术网

C# Nunit单元测试随机数

C# Nunit单元测试随机数,c#,unit-testing,random,nunit,C#,Unit Testing,Random,Nunit,我希望对一个返回随机浮点作为ID的方法进行单元测试。我试图使用红-绿重构,但代码的随机性让我感到困惑。下面是我尝试测试的方法。我知道技术上我应该先写测试,但我不知道如何测试随机性 public Random ReturnDevID() { var rnd = new Random(); rnd.NextDouble(); return rnd;

我希望对一个返回随机浮点作为ID的方法进行单元测试。我试图使用红-绿重构,但代码的随机性让我感到困惑。下面是我尝试测试的方法。我知道技术上我应该先写测试,但我不知道如何测试随机性

public Random ReturnDevID()
                {
                    var rnd = new Random();
                    rnd.NextDouble();
                    return rnd;
                }

写这篇文章有点奇怪。我个人认为您不需要它,但如果您愿意,您可以尝试类似的方法(我还更改了您的实现,因为它返回的是Random的实例,而不是Random float):


您可能也希望检查链接的重复项-随机项不仅仅是不同的-即“除了测试函数返回所需范围内的日期外,您还希望确保结果分布均匀。”即,您建议的测试愉快地接受
public double ReturnDevID=>lastValue++为“随机”。旁注:代码示例显示了
random
..@AlexeiLevenkov的错误用法是的,您是对的,示例显示了random的错误用法,我在回答中指出了这一点。另一方面,问题不是“我的随机实现正确吗?”,而是“如何测试它?”。我不同意那种认为它是复制品的说法。链接的帖子只是展示了random的正确用法,而不是如何测试它。关于如何测试它,这是一个近似值。我个人不认为测试它有什么价值,但你介意详细说明一种测试它的正确方法吗?请注意,文章中的代码是使用
Random
-
public double ReturnDevID()
{
     var rnd = new Random();
     return rnd.NextDouble();
}

public void TestRandom()
{
     // Call the method 100 times and save the result in a list
     var randoms = Enumerable.Range(0, 100)
                             .Select(i => ReturnDevID())
                             .ToList();

      // Make sure you have no duplicates
      Assert.AreEqual(randoms.Count, randoms.Distinct().Count());
}