NUnit - фреймворк для модульного тестирования и разработки по TDD. Для упорядочивания здесь знаний будет цикл статей о нём.

Что тестировать?

Напишем простой класс Fibonacci, который вычисляет число Фибоначчи, с единственным методом Calculate:

namespace SimpleLibrary {
  public class Fibonacci {
    public static int Calculate(int x) {
      if (x <= 0)
        return 0;
 
      if (x == 1)
        return 1;
 
      return Calculate(x - 1) + Calculate(x - 2);
    }
  }
}

Первый тест

Отделим тесты от рабочего кода в отдельную сборку: добавьте в свой Solution новый проект Fibonacci.Tests в котором будут разрабатываться тесты для нашего класса. Переименуем класс Class1 в FibonacciTest. Добавим через NuGet ссылки на NUnit (собственно, сам фреймоворк) и NUnit Test Adapter (для того, чтобы тесты можно было запускать прямо из Visual Studio). К тому же необходимо добавить в проекте Fibonacci.Tests ссылку на тестируемую сборку Fibonacci. Теперь все готово, для того, чтобы вы могли написать свой первый тест с NUnit. Измените код класса FibonacciTest следующим образом:

using System;
using SimpleLibrary;
using MbUnit.Framework;

namespace SimpleLibrary.Test {
  public class FibonacciTest {
    [Test]
    public void Fibonacci_of_number_greater_than_one() {
      int result = Fibonacci.Calculate(6);
      Assert.AreEqual(8, result);
    }
  }
}

Что мы сделали в предыдущем примере:

  • Импортировали NUnit
  • Добавили новый public метод Fibonacci_of_number_greater_than_one.
  • Добавили к методу Fibonacci_of_number_greater_than_one атрибут [Test].
  • В методе Fibonacci_of_number_greater_than_one добавили вызов метода Assert.AreEqual.

Метод Assert.AreEqual только лишь проверяет, что Fibonacci.Calculate(6) равен 8. Класс Assert очень полезен при написании тестов, т.к. содержит большое количество вспомогательных методов для этого. Соберите проект и в окне Test Explorer нажмите на ссылку “Run Tests”. Ошибок быть не должно. Теперь у нас есть первый юнит-тест.