Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nunit 3中的随机化器_C#_Nunit 3.0 - Fatal编程技术网

C# Nunit 3中的随机化器

C# Nunit 3中的随机化器,c#,nunit-3.0,C#,Nunit 3.0,我正在将我的项目从nunit 2.6.3迁移到3.2.1。我发现“Randomizer”类从“NUnit.Framework”移动到了“NUnit.Framework.Internal”,但我找不到Randomizer.GetDoubles或任何等效方法 你知道吗 谢谢Randomizer类已经被移动,现在可以通过TestContext.CurrentContext.Random访问 不再有随机发生器.GetDoubles,而是有随机发生器.NextDouble(double min,doubl

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

你知道吗


谢谢

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

不再有
随机发生器.GetDoubles
,而是有
随机发生器.NextDouble(double min,double max)
方法


[]

如果您使用了带有种子的
随机化发生器
GetDoubles
可以在NUnit 3中替换该代码:

var randomizer = new Randomizer(seed);
double[] values = Enumerable.Repeat(randomizer.NextDouble(min, max), times).ToArray();
可通过
NUnit.Framework.Internal
命名空间使用
随机化器
类。

@Dejan
是的,很抱歉。我试图通过
随机化器
类方法生成一组测试编号,并通过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);
    }
publicstaticdouble[]GetDoubleInRangeNums()
{
列表=新列表();
双k=0;
list.Add(double.MinValue);
list.Add(double.MaxValue);
对于(int i=0;i<3;i++)
{
k=随机化器.NextDouble(double.MaxValue);
如果(!list.Contains(k))
{
增加(k);
}
}
return list.ToArray();
}
[测试]
[类别(“DataType.Double”)]
public void DoubleInRangeTest([ValueSource(“GetDoubleInRangeNums”)]double value[Values(1)]int标志)
{
字符串tableName=“DataTypeDouble”;
string columnType=“双精度”;
CreateTable(表名、列类型);
EsgynDbDataType_FloatPointNum(表名、值、值、EsgynDBType.Double、标志);
}

所以我需要使用NextDouble重写GetDoubles方法?为什么会做出这样的决定?@atrwsr他们做了很多突破性的更改,我正在努力将代码迁移到v3。这就像一堵大墙,我认为许多更改都被错误地打破了。嗨,德扬,我使用了你的方法,但没有得到预期的结果。值都一样。@Leal.li:你尝试过不同的种子吗?感谢你的快速响应,我的意思是,我设置了相同的种子,每次都会得到随机值,它只会得到相同的值。如果通过设置不同的种子,我想测试1000次,这是否意味着我需要设置1000个种子?这太不友好了吗?它不能像“[Random(-128127,3)]”@Leal.li那样方便吗?我认为你做错了什么。你为什么不设置另一个SO问题,并显示一个小的控制台应用程序来显示你正在做什么,以便人们可以帮助你。当然,要得到1000个随机数,你不需要1000个种子。但是,相同的种子总是会生成相同的随机数序列-这一点很重要,因此您可以获得可重复的结果。是的,很抱歉。我尝试通过随机发生器类方法生成一组测试数,并通过Nunit ValueSource属性导入这些测试数。以下是我当前的方法。谢谢,它帮助了我。:)