2016-06-16 4 views
3

Я переношу свои проекты с nunit 2.6.3 на 3.2.1. Я понял, что класс «Randomizer» переместился из «NUnit.Framework» в «NUnit.Framework.Internal», но я не могу найти метод Randomizer.GetDoubles или любой эквивалент.Randomizer в Nunit 3

Есть идеи об этом?

Благодаря

ответ

1

Класс Randomizer был перемещен, и теперь доступен через TestContext.CurrentContext.Random.

Существует не Randomizer.GetDoubles, но есть метод Randomizer.NextDouble(double min, double max).

[Docs]

+1

Так что мне нужно переписать метод _GetDoubles_ с помощью _NextDouble_? почему такое решение? –

+0

@atrwsr они сделали много изменений, и я изо всех сил пытаюсь перенести свой код на v3. Это похоже на большую стену, я думаю, что многие из изменений ошибочно ломались. –

0

Если вы использовали Randomizer с семенами вместе с GetDoubles вы можете заменить этот код в NUnit 3:

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

Randomizer класс доступен через NUnit.Framework.Internal имен.

+0

Здравствуйте, Dejan, я использовал ваш метод, но не получил ожидаемого результата. Все значения одинаковы. –

+0

@ Leal.li: вы пробовали с разными семенами? – Dejan

+0

Спасибо за ваш быстрый ответ, я имею в виду, что я устанавливал одинаковые семена по временам, получая случайное значение, оно получает только одно значение. если, установив разные семена, я хочу протестировать 1000 раз, значит ли это, что мне нужно установить 1000 семян? Это слишком недружелюбно? Не может быть так удобно, как «[Random (-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); 
    } 
Смежные вопросы