我將我的項目從nunit 2.6.3遷移到3.2.1。我發現「Randomizer」類從「NUnit.Framework」移動到「NUnit.Framework.Internal」,但我找不到Randomizer.GetDoubles或任何等效的方法。Nunit中的Randomizer 3
對此有何想法?
感謝
我將我的項目從nunit 2.6.3遷移到3.2.1。我發現「Randomizer」類從「NUnit.Framework」移動到「NUnit.Framework.Internal」,但我找不到Randomizer.GetDoubles或任何等效的方法。Nunit中的Randomizer 3
對此有何想法?
感謝
隨機數發生器類已被移動,並且現在通過TestContext.CurrentContext.Random
訪問。
不再有Randomizer.GetDoubles
,但有一個Randomizer.NextDouble(double min, double max)
方法。
[Docs]
如果已經使用具有與種子一起GetDoubles
一個Randomizer
可以在NUnit的3替換代碼:
var randomizer = new Randomizer(seed);
double[] values = Enumerable.Repeat(randomizer.NextDouble(min, max), times).ToArray();
的Randomizer
類是可通過NUnit.Framework.Internal
命名空間。
嗨德揚,我用你的方法,但沒有得到預期的結果。值都一樣。 –
@ Leal.li:你嘗試過不同的種子嗎? – Dejan
感謝您的快速響應,我的意思是,我通過倍數設置相同的種子獲得隨機值,它只獲得相同的值。如果通過設置不同的種子,我想測試1000次,這是否意味着我需要設置1000個種子?它是不是太不友好?不能像「[Random(-128,127,3)]」那樣方便 –
@Dejan 是的,我很抱歉試圖通過產生的Randomizer
類方法,一組測試數字,和NUnit的ValueSource
屬性導入以下測試numbers.The是我目前的做法。
我知道這個方法不好,所以我想問一下其他好的方法。
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);
}
所以我需要使用_NextDouble_重寫_GetDoubles_方法?爲什麼有這樣的決定? –
@atrwsr他們做了很多重大更改,我正在努力將我的代碼遷移到v3。這就像一堵大牆,我想很多變化都是錯誤的。 –