首页 > 解决方案 > Nunit 单元测试随机数

问题描述

我正在寻找对返回随机浮点数作为 ID 的方法进行单元测试。我正在尝试使用 Red Green Refactor,但被代码的随机性难住了。下面找到我要测试的方法。我知道我在技术上应该先编写测试,但我不知道如何随机测试。

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

标签: c#unit-testingrandomnunit

解决方案


写起来有点奇怪。我个人认为你不需要它,但如果你愿意,你可以尝试这样的事情(我也改变了你的实现,因为它返回一个随机的实例,而不是一个随机的浮点数):

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());
}

推荐阅读