3

我正在将我的项目从 nunit 2.6.3 迁移到 3.2.1。我发现“Randomizer”类从“NUnit.Framework”移动到“NUnit.Framework.Internal”,但我找不到方法 Randomizer.GetDoubles 或任何等效方法。

有什么想法吗?

谢谢

4

3 回答 3

1

@Dejan是的,对不起。我尝试通过Randomizer类方法生成一组测试编号,并通过NunitValueSource属性导入这些测试编号。以下是我目前的方法。
我知道这种方法不好,所以我想知道其他好的方法。

    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);
    }
于 2018-02-07T01:50:56.447 回答
1

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

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

[文档]

于 2016-06-16T18:27:58.530 回答
0

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

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

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

于 2018-01-04T19:57:04.810 回答