Нещодавно я придумав таку конвенцію щодо назви своїх тестів, їхніх класів та проектів, що містять проекти, щоб максимально покращити їх описові характеристики:
Скажімо, я тестую 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()
Я вважаю, що це легше читати.
[ Завершити редагування ]
Я сподіваюсь, що це породжує ще кілька ідей, оскільки я вважаю, що називати тести мають велике значення, оскільки це може заощадити вам багато часу, яке б інакше було витрачено на те, щоб зрозуміти, що роблять тести (наприклад, після відновлення проекту після розширеного перерви) .