我说,我有以下试验:

    [Test]
    public void MyTest( [RandomNumbers( Count=100, Minimum=0, Maximum=1000 )] int number )
    {
        ...
    }

并在某些时候,在我的正常的生成过程中,它已失败。我得到了一个电子邮件通知和进行调查。

现在,当我打开试验Visual Studio,并点击"运行测试",它传递。我再次这样做,并且它通过了。又一次。又一次。显然,失效是相关的,特别是序列的随机数字。

因此,问题是: 我如何重新运行这个测试的确切顺序?
(提供我们充分迦流的报告)

 
 
更新:
(下面的评论,它是一个糟糕的主意)

第一, 我不实际上要求它是否是一个好主意。问题是不同的。

第二, 当该系统正在测试是复杂的,足,以及输入数据空间的独立的多个维度,适当地打破这一空间的入等同区域的一个重大的挑战在心理的努力和时间,这仅仅是不值得的,提供更小的组成部分的系统已经过测试,对他们自己。同时,如果我可以戳系统在这里和那里,为什么不这样做呢?

第三, 我其实不是一个新手在这一领域。我总是使用这种技术与其他测试框架(例如csUnit和关),也被证明非常成功捕捉微妙的错误。当时,有没有这样的概念作为所产生的数据,所以我们用我们自己的定义拐杖,在形成的 System.Random 预定的种子。这颗种子正在产生的具初始化(通常是基于当前时间),并仔细写入记录。这种方式,当测试失败了,我可以采取的种子记录,将其插入试验固定和得到完全相同的一组试验数据,因此,完全一样,失败的调试。

第四, 如果它是这样一个糟糕的主意,为什么 RandomNumbers 工厂存在的第一个地方吗?

有帮助吗?

解决方案

目前没有内在的方式 迦流/MbUnit 来生再次同一序列的随机数字。但我认为这可能是一个有用的功能和我有没有打开一个 的问题 针对这一请求。 我要更新的问题的答案时,它的准备。

什么我提议如下:

  • 显示实际的种子在内的随机作为一个发电机 注释 进入测试报告。
  • 让一个 Seed 财产 [RandomNumbers][RandomStrings] 属性和流利的数据生成器。

因此你可以很容易地重新生成完全相同的序列的数值通过馈电的发电机同种子的数量。

更新:这个功能是现在 迦流v3。3.8 和以后。


现在我们都同意什么彼得说。使用随机的数字输入的单元测试是 很少 一个好主意。其必然结果是,它是 有的时候 方便主要是适当的。而这正是为什么我们决定为执行该要素在MbUnit.恕我直言,一个常见的情况下,可能适合以及与输入随机测试 随机分析上列码的计算.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top