2016-06-16 3 views
3

私のプロジェクトをnunit 2.6.3から3.2.1に移行しています。私は、 "Randomizer"クラスが "NUnit.Framework"から "NUnit.Framework.Internal"に移動したが、Randomizer.GetDoublesまたは同等のメソッドを見つけることができないことを理解しました。Nunitのランダマイザ3

これについてのご意見はありますか?

おかげ

答えて

1

ランダマイザクラスが移動し、今TestContext.CurrentContext.Randomを介してアクセスされています。

Randomizer.GetDoublesはなくなりましたが、Randomizer.NextDouble(double min, double max)メソッドがあります。

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

RandomizerクラスはNUnit.Framework.Internal名前空間を介して利用できます。あなたはNUnitの3にそのコードを置き換えることができ、一緒GetDoublesとシードとのRandomizerを使用している場合は、[Docs]

+1

したがって、_NextDouble_を使用して_GetDoubles_メソッドを書き直す必要がありますか?なぜそのような決定? –

+0

@atrwsr彼らは多くの急速な変更を行いました。私はコードをv3に移行するのに苦労しています。それは大きな壁のようなものだ、私は変更の多くが誤って壊れていたと思う。 –

0

+0

こんにちはDejan、私はあなたの方法を使用しましたが、期待どおりの結果を得られませんでした。 –

+0

@ Leal.li:別の種子で試しましたか? – Dejan

+0

あなたのクイックレスポンスのおかげで、私は時々同じ値を得るランダムな値を取得すると、同じ種子を設定することを意味します。私は1000種の種子を設定すると1000回も試したいと思うのですが、それは1000種を設定する必要があるのでしょうか?あまりにも非友好的ですか? "[ランダム(-128、127、3)]" –

0

@Dejan はい、私はsorry.Iが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); 
    } 
関連する問題