русский
Germany.ruForen → Архив Досок→ Programmierung

Unit Test. Кто использует?

08.11.16 19:28
Re: Unit Test. Кто использует?
 
Программист коренной житель
in Antwort Simple 08.11.16 17:54

Так вот чтобы прикрутить заглушку надо зачастую очень многое менять в коде.

Во-первых, код надо делать на интерфейсах и виртуальных функциях.

Во-вторых, нельзя использовать статические функции.

В-третьих, создавать новые объекты через фабрики, т.е. никаких new MyCoolClass () в коде.

В-четвертых, надо делать обертки над системными функциям, т.е. никаки File.Exists(fileName).


Казалось бы, что все это очень простые правила, но следовать им не так просто, особенно, если код уже существует.

Но следовать этим правилам помогает TDD.


Проникся твоим энтузиазмом, нашел книгу Ошеров, буду внедрять по полной :)

Удачи! Я до этой книжки тоже был довольно скептично настроен на счет юнит-тестов и TDD, но проникся :) Стал использовать в своих проектах и эти методики реально работают. Попробуй и ты возненавидишь статические функции и new в коде :D :D :D


Помню у нас было проблемное место связано с подсчетом свободного места на диске. Буквально каждую неделю приходили новые баги. При этом пофиксишь один и всплывает либо новый, либо ломается то, что пофиксил недели 2-3 тому назад. Я тогда переработал код, сделал обертку надо System.IO.Directory и сделал юнит тесты. Багов в том месте больше нет :) И там были именно такие проблемы, что диск вроде виден, но нет прав на запись. Или путь к папке есть и все ОК, но места недостаточно. Или все есть, но слишком длинный путь. И куча всего другого. Все эти проблемы легко закрываются юнит-тестами и совершенно невозможно протестировать на уровне QA или интеграционными тестами. Более того, у нас потом ввели анализатор статического кода и индусы пофиксили многие "баги", так все это всплыло еще до того, как они закомитили код :) Все вернули и добавили SuppressMessage с соответствующими комментариями. И никаких проблем :)

 

Sprung zu