AutoFixture killer feature
Разбираясь в библиотеке AutoFixture пришёл к выводу, что её главное назначение это минимизация
За счёт чего это достигается? Специальные атрибуты для интеграций с фреймворками xUnit и NUnit предоставляют всю необходимую магию.
Например, атрибут
Допустим, у нас есть некоторая корзина, которую надо протестировать на добавление позиций.
Как бы выглядел тест без AutoFixture?
А после применения атрибута?
Теперь весь Arrange лёг на плечи библиотеки и больше не надо волноваться по поводу template кода с инстанциированием!
Ну а расширять поведение под нужды валидаций или каких-то moq'ирований естественно можно, но об этом в другой раз.
Ставьте огонёчки, если хотели бы узнать о том, что такое Arrange и подход AAA в тестировании.
Разбираясь в библиотеке AutoFixture пришёл к выводу, что её главное назначение это минимизация
Arrange
этапа в тесте.За счёт чего это достигается? Специальные атрибуты для интеграций с фреймворками xUnit и NUnit предоставляют всю необходимую магию.
Например, атрибут
AutoData
.Допустим, у нас есть некоторая корзина, которую надо протестировать на добавление позиций.
Как бы выглядел тест без AutoFixture?
[Fact]
public void Cart_NotNullItem_NotEmpty()
{
var item = new Item();
var sut = new Cart();
sut.AddItem(item);
Assert.NotEmpty(sut.Items);
}
А после применения атрибута?
[Theory, AutoData]
public void Cart_NotNullItem_NotEmpty(Item item, [Frozen] Cart sut)
{
sut.AddItem(item);
Assert.NotEmpty(sut.Items);
}
Теперь весь Arrange лёг на плечи библиотеки и больше не надо волноваться по поводу template кода с инстанциированием!
Ну а расширять поведение под нужды валидаций или каких-то moq'ирований естественно можно, но об этом в другой раз.
Ставьте огонёчки, если хотели бы узнать о том, что такое Arrange и подход AAA в тестировании.