Недавно я придумал следующее соглашение для именования своих тестов, их классов и содержащих проектов, чтобы максимизировать их описание:
Допустим, я тестирую Settings
класс в проекте в MyApp.Serialization
пространстве имен.
Сначала я создам тестовый проект с MyApp.Serialization.Tests
пространством имен.
В этом проекте и, конечно, в пространстве имен я создам класс с именем IfSettings
(сохраненный как IfSettings.cs ).
Допустим, я тестирую SaveStrings()
метод. -> Я назову тест CanSaveStrings()
.
Когда я запускаю этот тест, он показывает следующий заголовок:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Я думаю, что это очень хорошо говорит мне, что это тестирование.
Конечно, полезно, чтобы в английском языке существительное «Тесты» было таким же, как и глагол «тесты».
Вашу креативность не ограничивают в названии тестов, поэтому мы получим для них полные заголовки предложений.
Обычно имена тестов должны начинаться с глагола.
Примеры включают в себя:
- Обнаруживает (например
DetectsInvalidUserInput
)
- Броски (например
ThrowsOnNotFound
)
- Будет (например
WillCloseTheDatabaseAfterTheTransaction
)
и т.п.
Другой вариант - использовать «это» вместо «если».
Последнее спасает меня нажатие клавиш , хотя и описывает более точно , что я делаю, так как я не знаю, что тестируемое поведение присутствует, но я тестирование , если оно есть.
[ Изменить ]
После более длительного использования вышеуказанного соглашения об именах я обнаружил, что префикс If может сбивать с толку при работе с интерфейсами. Так уж получилось, что класс тестирования IfSerializer.cs очень похож на интерфейс ISerializer.cs в «вкладке« Открыть файлы »». Это может очень раздражать при переключении между тестами, тестируемым классом и его интерфейсом. В результате я бы сейчас выбрал That over If в качестве префикса.
Кроме того, теперь я использую - только для методов в моих тестовых классах, поскольку это не считается лучшей практикой где-либо еще - "_" для разделения слов в именах моих тестовых методов, как в:
[Test] public void detects_invalid_User_Input()
Я считаю, что это легче читать.
[ Конец редактирования ]
Я надеюсь, что это порождает еще несколько идей, так как я считаю имена тестов очень важными, поскольку это может сэкономить вам много времени, которое в противном случае было бы потрачено на понимание того, что делают тесты (например, после возобновления проекта после длительного перерыва). ,