Nunit 3中的随机发生器

时间:2016-06-16 16:08:43

标签: c# nunit-3.0

我将我的项目从nunit 2.6.3迁移到3.2.1。我发现"随机发生器"班级来自" NUnit.Framework"到" NUnit.Framework.Internal"但我找不到Randomizer.GetDoubles或任何等价物的方法。

有任何想法吗?

由于

3 个答案:

答案 0 :(得分:1)

Randomizer类已被移动,现在可通过TestContext.CurrentContext.Random访问。

不再有Randomizer.GetDoubles,但有Randomizer.NextDouble(double min, double max)方法。

[Docs]

答案 1 :(得分:1)

@Dejan    是的,我很抱歉。我试图通过Randomizer类方法生成一组测试数字,并通过Nunit ValueSource属性导入这些测试数字。以下是我目前的方法。 />    我知道这种方法不好,所以我想知道其他好的方法。

    public static double[] GetDoubleInRangeNums()
    {
        List<double> list = new List<double>();
        double k = 0;
        list.Add(double.MinValue);
        list.Add(double.MaxValue);
        for (int i = 0; i < 3; i++)
        {
            k = randomizer.NextDouble(double.MaxValue);
            if (!list.Contains(k))
            {
                list.Add(k);
            }
        }
        return list.ToArray();
    }

    [Test]
    [Category("DataType.Double")]
    public void DoubleInRangeTest([ValueSource("GetDoubleInRangeNums")]double value, [Values(1)]int flag)
    {
        string tableName = "DataTypeDouble";
        string columnType = "double precision";
        CreateTable(tableName, columnType);
        EsgynDbDataType_FloatPointNum(tableName, value, value, EsgynDBType.Double, flag);
    }

答案 2 :(得分:0)

如果您将Randomizer与种子GetDoubles一起使用,则可以在NUnit 3中替换该代码:

var randomizer = new Randomizer(seed);
double[] values = Enumerable.Repeat(randomizer.NextDouble(min, max), times).ToArray();

Randomizer类可通过NUnit.Framework.Internal命名空间获得。