Как писать тесты на Fluentassertions C#
FluentAssertions — это библиотека для написания утверждений в тестах на C#, которая предлагает более читабельный и выразительный синтаксис по сравнению с традиционными методами утверждений. Вот как можно использовать FluentAssertions для написания тестов в C#.
Установка FluentAssertions
Для начала вам нужно установить FluentAssertions в ваш проект. Вы можете сделать это через NuGet Package Manager или с помощью команды в консоли:
Install-Package FluentAssertions
Пример использования FluentAssertions
Вот пример, который демонстрирует, как писать тесты с использованием FluentAssertions. Предположим, у вас есть метод, который складывает два числа:
public class Calculator {
public int Add(int a, int b)
{
return a + b;
}
}
Теперь мы напишем тесты для этого метода, используя NUnit и FluentAssertions.
Пример теста
using FluentAssertions;
using NUnit.Framework;
[TestFixture]
public class CalculatorTests
{
private Calculator _calculator;
[SetUp]
public void SetUp()
{
_calculator = new Calculator();
}
[Test]
public void Add_TwoPositiveNumbers_ReturnsSum()
{
// Arrange
int a = 2;
int b = 3;
// Act
int result = _calculator.Add(a, b);
// Assert
result.Should().Be(5);
}
[Test]
public void Add_NegativeAndPositiveNumber_ReturnsCorrectSum()
{
// Arrange
int a = -2;
int b = 3;
// Act
int result = _calculator.Add(a, b);
// Assert
result.Should().Be(1);
}
[Test]
public void Add_TwoNegativeNumbers_ReturnsSum()
{
// Arrange
int a = -2;
int b = -3;
// Act
int result = _calculator.Add(a, b);
// Assert
result.Should().Be(-5);
}
}
Объяснение кода
Импортирование пространств имен: В начале файла мы импортируем необходимые пространства имен для FluentAssertions и NUnit.
Создание тестового класса: Мы создаем класс CalculatorTests, который будет содержать наши тесты. Он помечен атрибутом [TestFixture], что указывает NUnit, что это класс с тестами.
Инициализация: В методе SetUp мы инициализируем объект Calculator, который будет использоваться в тестах.
Написание тестов:
Каждый тест помечен атрибутом [Test].
В каждом тесте мы используем Should() от FluentAssertions для выполнения утверждений, что делает код более читаемым.
Мы проверяем, что результат метода Add соответствует ожидаемому значению с помощью Should().Be(expectedValue).
Дополнительные возможности FluentAssertions
FluentAssertions предоставляет множество других возможностей для проверки различных типов данных и условий. Вот некоторые из них:
Проверка коллекций:
- var list = new List<int> { 1, 2, 3 };
- list.Should().Contain(2);
- list.Should().HaveCount(3);
Проверка строк:
- string message = «Hello, World!»;
- message.Should().StartWith(«Hello»).And.EndWith(«World!»);
Проверка объектов:
- var person = new Person { Name = «John», Age = 30 };
- person.Should().Match<Person>(p => p.Name == «John» && p.Age == 30);
Заключение
FluentAssertions делает ваши тесты более выразительными и легкими для чтения. С его помощью вы можете писать утверждения, которые выглядят как естественный язык, что улучшает поддержку и понимание тестов.