1

我正在创建一个单元测试,它将公司信息测试到系统中,但我可以在我的测试中测试各种断言。

这是我写的代码:

public static Random randnum = new Random();
private string _company = DateTime.Now.ToString("dd/MM/yy ") + ("company") + randnum.Next().ToString();

基本上,我只是想获得一个随机数,以便在公司上市的每个断言中生成一个随机数。所以我写错了还是我忘记了一块?

我正在使用 MBUnit。

请帮忙!

4

2 回答 2

1

重写您的单元测试以使用以下内容。

public static IEnumerable<object[]> Numbers
    {
        get
        {
            List<object[]> testCases = new List<object[]>();
            Random random = new Random();
            testCases.AddRange(
                (from x in new[]
                {1, 2, 3, 4, 5, 6, 7, 8}
                select new object[] {x})
                .OrderBy(x=>random.Next()));
            return testCases;
        }
    }

    [TestCaseSource("Numbers")]
    public void CreateApplication(
        int number
        )
    {
         string company = DateTime.Now.ToString("dd/MM/yy ") + ("company") + number.ToString();

    }

我怀疑您的问题与不变性(不可变对象)有关。您正在设置具有初始值的私有 _company 字段。调用此值不会重新生成随机数,而是使用实例化此类时创建的值。

这是一个很好的链接,我发现它对随机数很有趣。

如何播种随机类以避免获得重复的随机值

于 2013-01-22T15:19:35.417 回答
1

我认为您可以在此处找到有关 Random 函数工作方式的更多信息

Random 类不是真正的随机数生成器。它是一个伪随机数生成器。Random 的任何实例都有一定数量的状态,当您调用 Next(或 NextDouble 或 NextBytes)时,它将使用该状态向您返回一些看似随机的数据,相应地改变其内部状态,以便在下一次调用时您将得到另一个明显随机的数字。

于 2013-01-22T15:22:47.820 回答