Autofixture: сделать AutoFixture статичным

Созданный на 28 авг. 2013  ·  4Комментарии  ·  Источник: AutoFixture/AutoFixture

[Это запрос на улучшение]

Было бы здорово, если бы мы могли написать

Fixture.Create();

вместо создания экземпляра Fixture
var fixture = new Fixture ();
fixture.Create();

В своей презентации автофиксации на NDC вы сказали, что ненавидите объявлять переменную в конструкторе тестового класса, чтобы использовать ее в каждом методе тестирования. Вы сказали, что яснее увидеть все внутри одного метода. Я последовал вашей идее, потому что считаю это хорошей идеей, но проблема в том, что в настоящее время я создаю экземпляр нового Fixture в каждом методе, и я не очень его фанат, я бы предпочел вызвать Fixture.Create();

Что вы думаете ?

Да, я знаю, я мог бы использовать декларативный способ, но я не большой поклонник, потому что мне придется создать новый класс, реализующий ICustomize. Поэтому я не увижу все внутри одной методики тестирования. Мне нужно перейти к классу, чтобы увидеть, как настроены данные. Более того, большинство моих методов имеют разные способы настройки данных, поэтому я не хочу создавать один класс, реализующий ICustomize для каждого моего метода тестирования.

Все 4 Комментарий

Помимо сохранения 6 нажатий клавиш, как

`` С #
var foo = Fixture.Create();

provide any advantage that

``` c#
var foo = new Fixture().Create<Foo>();

нет?

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

Спасибо за ответ Марк, действительно, фрагмент кода позволит мне печатать быстрее, но для удобства чтения я предпочитаю читать;

Fixture.Create();
Крепеж.Строить();

чем

новый прибор (). Создать();
new Fixture (). Build();

Это небольшое улучшение, но оно заставит мое сердце биться еще сильнее при использовании автофиксации.

Справедливо. Однако читабельность - вещь субъективная.

По моему опыту, в большинстве кодовых баз людям приходится так или иначе настраивать экземпляр Fixture, чтобы учесть все небольшие особенности своей кодовой базы или используемых ими служебных библиотек. Например, вы не можете использовать простой экземпляр Fixture для тестирования контроллеров ASP.NET MVC, потому что (IIRC) есть определенные части этих базовых классов, которые имеют циклические ссылки.

Таким образом, предполагая, что гипотетический метод Fixture.Create<T>() будет работать с обычным ванильным экземпляром Fixture, я считаю, что его полезность ограничена.

Это не то направление, в котором я хочу использовать AutoFixture, поэтому я собираюсь закрыть это предложение.

Однако ничто не мешает создать такую ​​обертку самостоятельно; это было бы довольно просто реализовать.

Мне также нравится идея сохранить new Fixture (), но также иметь дополнительный статический ярлык (для частного статического экземпляра) в самой библиотеке. Написать оболочку или метод расширения тривиально, но немного проблематично управлять (например, пространством имен) и переносить из проектов в проекты.
Спасибо,

Была ли эта страница полезной?
0 / 5 - 0 рейтинги