Почему testFixture вместо TestClass? - PullRequest
21 голосов
/ 05 июля 2010

Существует три способа организации юнит-тестов: тест на прибор, класс или особенность.Но атрибут NUnit для TestClass называется TestFixture.Есть ли для этого исторические причины?

Ответы [ 3 ]

17 голосов
/ 20 мая 2011

Основная историческая причина в том, что NUnit начал свою жизнь как прямой порт от JUnit, а junit назвал его тестовым прибором.

NUnit 1.0 был раньше моего времени, но мне сказали, что он начался с переименования всехфайлы .java в JUnit для файлов .cs и пытается скомпилировать.Это было исправлено оттуда и пользовательский интерфейс был добавлен.Когда я присоединился к NUnit 2.0, в NUnit 1.0 все еще существовал метод, называемый IsVisualAgeForJava, поскольку в то время JUnit имел для этого особое поведение.

В NUnit 2.0 нашей целью было сделать NUnit более .NETish.Итак, мы добавили атрибуты и кучу других вещей.Все мы были выходцами из Java и много лет работали с JUnit.Казалось вполне естественным использовать [TestFixture].

17 голосов
/ 19 мая 2012

Я уважаю ответ Mike Two, но я бы сказал, что команда NUnit ошиблась, и использование [TestFixture] - это семантическая бородавка на лице NUnit. Тестовый класс не является приспособлением . Из того, что я изучил в отношении JUnit, я не нашел никаких ссылок на тестовый класс в качестве тестового приспособления и не нашел много дискуссий о «тестовых приспособлениях», относящихся к тестовым классам. Скорее, все обсуждения JUnit / xUnit о приборах относятся к настройке и демонтажу, которые, конечно, являются распространенными методами, используемыми для настройки реальных тестовых приборов.

Обратите внимание, что в NUnit 2.5 вы можете удалить аннотацию [TestFixture].

Обновление: (июль 2012 г.)

Я просто читал «Книгу огурцов», и на странице 99 автор Мэтт Винн объясняет происхождение использования «приспособления». Я цитирую:

Существует давняя традиция (пришедшая из мира аппаратного обеспечения, где появились тестовые устройства) называть связь между тестовой системой и тестируемой системой устройством. Это роль «связующего кода», которую мы назвали в этой книге как код автоматизации. Система тестирования FIT использует это значение термина. Некоторые инструменты модульного тестирования (такие как NUnit) еще больше запутали проблему, ссылаясь на сам класс тестового примера как на фиксатор. Так много для вездесущего языка! (Wynne & Hellesoy, 2012)

5 голосов
/ 05 июля 2010

Теперь, когда вы спросили об этом, я просто посмотрел.
Приспособление для тестирования - это фиксированное базовое состояние, которое должно быть установлено перед выполнением тестов, чтобы результаты были предсказуемыми и повторяемыми. В рамках модульного тестирования мы используем атрибуты / методы SetUp и TearDown для создания / уничтожения тестового прибора (например, инициализация переменных экземпляра с нужными объектами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...