Изучаю NUnit. Часть 1

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”. Ошибок быть не должно.

Теперь у нас есть первый юнит-тест.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s