我正在将我的项目从 nunit 2.6.3 迁移到 3.2.1。我发现“Randomizer”类从“NUnit.Framework”移动到“NUnit.Framework.Internal”,但我找不到方法 Randomizer.GetDoubles 或任何等效方法。
有什么想法吗?
谢谢
@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);
}
Randomizer 类已被移动,现在可以通过TestContext.CurrentContext.Random
.
不再有 a Randomizer.GetDoubles
,但有一种Randomizer.NextDouble(double min, double max)
方法。
[文档]
如果您将 aRandomizer
与种子一起使用GetDoubles
,则可以在 NUnit 3 中替换该代码:
var randomizer = new Randomizer(seed);
double[] values = Enumerable.Repeat(randomizer.NextDouble(min, max), times).ToArray();
该类Randomizer
可通过NUnit.Framework.Internal
命名空间获得。