我将我的项目从nunit 2.6.3迁移到3.2.1。我发现"随机发生器"班级来自" NUnit.Framework"到" NUnit.Framework.Internal"但我找不到Randomizer.GetDoubles或任何等价物的方法。
有任何想法吗?
由于
答案 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
命名空间获得。