Як правильно писати тести

тепер щодо ваших методів. Наприклад я побачив такий лог виконання тестів:
AddData_ShouldReturnError () - Failed
AddData_ShouldReturnException () - Failed

Що повинен зробити висновок з цих помилок?

Ось приклад, до чого потрібно прагнути:

Назва тесту слід схемою іменування:

Якщо раптом впало, то ви відразу зрозумієте, що список не порожній! Тому що тестовий метод містить тільки і тільки assert-и, таким чином ваш тестований код виконується в Act-частини невірний!

Будь-модульний тест повинен працювати відповідно до паттерну проектування AAA - Arrange -> Act -> Assert. Тобто Підготовка до тестування - Виконання перевіряється коду - Перевірка результатів.

Технічно робота модульного тесту організовується так:

setUp () - це підготовка до тестування, тобто Arrange
test () - Тут Act і Assert

Так, в модульному тесті підготовка пишеться тільки і тільки в setUp () методі! Помилка в підготовці тест-середовища не повинно впливати на сам тестовий метод.

Тестовий метод це не підготовка результату, це перевірка РОБОТИ вашого БОЙОВОГО коду.
Це важливо. Дуже часто бачу, коли в тест-методи сунуть невеликі шматки коду готують тест.данние. Це не правильно.

Тестовий метод це:
Насамперед виконати бойовий код. Заради нього Радим і пишеться тестовий метод.
Другим справою один assert. Так, тестовий метод повинен містити ТІЛЬКИ і тільки одну перевірку!

Іншими словами не повинно бути такого: