NUnit Последовательный / Комбинаторный Вопрос - PullRequest
3 голосов
/ 19 августа 2011

Я пишу некоторые модульные тесты и хочу использовать тег Sequential. Я нашел синтаксис для деллакирования такого теста.

[Test, Sequential]
    public void TestCalculations(
    [Values(10000, 15000, 20000, 25000, 50000)] int salary)
    {


    }

Как обрабатываются утверждения при выполнении таких тестов, как последовательный / комбинаторный снесколько входов?

С наилучшими пожеланиями

Ответы [ 2 ]

6 голосов
/ 19 августа 2011

Я сам не использовал эти атрибуты, но я ожидал бы написать фактическое тело метода теста точно так же, как если бы вы писали его для одного значения. По сути, вам будет представлено только одно значение за раз, поэтому просто напишите код для проверки этого значения.

Учитывая документацию , я не думаю, что Sequential действительно имеет смысл для вашего примера, потому что у вас есть только один параметр. Это имеет смысл, когда у вас есть несколько параметров, и в основном говорится, что первое значение для одного параметра должно быть в паре с первым значением для другого параметра, затем вторым значением для каждого и т. Д., А не для каждого возможного пара выполняется. Вы можете использовать это для ввода и ожидаемого вывода, например:

[Test, Sequential]
public void TestDivisionBy2(
    [Values(10, 25, 40)] int input,
    [Values(5, 12, 20)] int expectedOutput)
{
    Assert.AreEqual(expectedOutput, input / 2);
}
4 голосов
/ 19 августа 2011

В некоторых случаях атрибут TestCase может быть полезен, он предоставляет встроенную функцию Result:

[TestCase(12,3, Result=4)]
[TestCase(12,2, Result=6)]
[TestCase(12,4, Result=3)]
public int DivideTest(int n, int d)
{
  return( n / d );
}

Если вы не ожидаете какого-либо конкретного значения результата и просто хотите убедиться, что тест работает нормально с различными входными значениями - вы также можете сделать это:

[TestCase(120000, -1)]
[TestCase(Int32.MinValue, Int32.MaxValue)]
[TestCase(-1, 23333)]
public void ShouldHandleWrongRangeValues(int n, int d)
{
     Assert.DoesNotThrow(() => { var someIntermediateValue = n * d; });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...