在测试夹具设置中运行时生成相同的随机数

时间:2009-02-26 10:26:44

标签: vb.net nunit

我正在尝试使用NUnit在测试期间生成一个随机数,但它会一直生成相同的数字。我正在使用以下功能。

dim dCount As Integer = Math.Floor((High - Low + 1) * Rnd() + Low)
dim divName As String = "abc" & dCount

知道为什么会这样做吗?

此致

萨姆

2 个答案:

答案 0 :(得分:1)

据推测,您正在快速连续执行许多测试。我不确切知道Rnd()在VB中的作用,但听起来它有典型的“每次呼叫新RNG”问题。

创建Random的单个实例并重复使用它。请注意,您的数学可以用简单的替换:

dim dCount as Integer = myRandom.Next(Low, High+1)

一个警告 - Random不是线程安全的。如果您需要从不同的线程生成随机数,either use locking or thread statics

另一方面:使用随机数会使您的单元测试不确定。你确定你需要吗?有时它是合适的,但不经常是IME。

答案 1 :(得分:0)

Dim dCount As Integer = between(low, high)
Dim divName As String = "abc" & dCount


Dim myRandom As New Random
Private Function between(ByVal low As Integer, ByVal high As Integer) As Integer
    between = myRandom.Next(low, high + 1)
End Function