Книга, безусловно, стоящая, но про пару недочётов сказать необходимо.
Нужно сперва разобраться в ужасном (местами) переводе и поверхностном освещении автором некоторых важных тем.
В книге идут многочисленные явные и неявные отсылки к классической монографии
Gerard Meszaros / Джерард Месарош - xUnit Test Patterns Refactoring Test Code / Шаблоны тестирования xUnit. Рефакторинг кода тестов. Причём многие шаблоны Хориков переделал так, что новичики могут воспринять их ошибочно.
Например, призыв "Избегайте команд if в тестах" (раздел 3.1.3, стр. 67) с утверждением о необходимости разбить один тест, содержащий If, на несколько, делается в общих словах и без каких-либо примеров кода. Джуниоры едва ли поймут что именно им делать.
Между тем, это классический паттерн
"Guard assertion" (xUnit), где решение подробно описано (см. стр. 510 из раздачи с Месарошем). Вместо хождения вокруг да около следовало прямо на него сослаться.
При этом Месарош не предлагал разбивать один тест на несколько, а рекомендовал считать if в качестве предусловия теста и заменить его на дополнительный assert.
В разделе 1.3.3 автор витиевато рассуждает о том, что вы не можете положиться на метрику branch coverage (тестирование if'ов и switch'ей) для определения качества тестов.
Новичок может воспринять сей совет как рекомендацию снизить количество тестов ветвления. В ответ на это приведу цитату изобретателя методологии Test-Driven Development Кента Бека (
стр. 196 из другой раздачи): "Тестировать следует: условные операторы; циклы; операции; полиморфизм. Однако только те из них, которые вы написали сами. Не тестируйте чужой код, если только у вас нет причин не доверять ему." Т. е. к библитекам Microsoft можно делать вызовы без тестов этих самых библитек. А к библиотеке Васи Пупкина нужны отдельные тесты.
Что такое операция - смотрите на стр. 125 книги Хорикова.
А вот цитата Мартина Фаулера из главы 4 "Создание тестов" из книги
"Рефакторинг: улучшение существующего кода" (стр. 118): "Наша задача - найти ошибки, которые могут возникнуть сейчас или в будущем. Поэтому я, например, не проверяю методы доступа, осуществляющие лишь чтение или запись поля: они настолько просты, что вряд ли в них обнаружится ошибка."
Test spy, или, как его называет автор, "Шпион", описан в книге в виде нестандартной реализации со встроенными утверждениями (asserts). В оригинале у Месароша Test Spy внутри себя assert'ов не имеет, утверждения вызываются непосредственно в теле теста (см. стр. 552 из раздачи с Месарошем). На работу теста это не повлияет, но путаницы добавит, особенно при общении с другими разработчиками, которые будут смотреть ваш код.
Книга Хорикова не рассчитана на новичков, автор постоянно (хотя и неосмысленно) даёт понять, что у читателя должен быть опыт работы с xUnit.
До прочтения этой книги желательно изучить литературу по xUnit (например, Месароша), а также разобраться, как тестировать коллекции, циклы и полиморфизм. По последним трём пунктам есть отличная книга
Hunt A., Thomas D. - Pragmatic Unit Testing in C# with NUnit, 2nd Edition [2007, PDF, ENG]
UPD:
На обратной стороне обложки бумажной версии заметил такую фразу: "Книга предназначена для читателей, владеющих основами юнит-тестирования." В раздаче страницы с этой фразой нет. Короче не для новичков эта книга.