Модульное тестирование приложения базы данных с бизнес-логикой, выполненной в пользовательском интерфейсе - PullRequest
35 голосов
/ 09 апреля 2010

Я сам управляю довольно большим приложением (50 000+ строк кода), и оно управляет некоторыми довольно важными бизнес-действиями. Чтобы описать простую программу, я бы сказал, что это модный пользовательский интерфейс с возможностью отображения и изменения данных из базы данных, и он управляет около 1000 единиц аренды, а также около 3 тысяч арендаторов и всеми финансами.

Когда я делаю изменения, потому что это очень большая база кода, я иногда что-то ломаю в другом месте. Обычно я проверяю это, выполняя все то, что я изменил на функциональном уровне (то есть я запускаю программу и работаю через пользовательский интерфейс), но я не могу протестировать для каждой ситуации. Вот почему я хочу начать с модульного тестирования.

Однако это не настоящая трехуровневая программа с уровнем базы данных, уровнем бизнеса и уровнем пользовательского интерфейса. Большая часть бизнес-логики выполняется в классах пользовательского интерфейса, а многое делается для событий. Все усложняется тем, что все зависит от базы данных, и я пока не видел хороших предложений о том, как проводить модульное тестирование взаимодействия с базой данных.

Как было бы хорошим способом начать модульное тестирование для этого приложения. Иметь ввиду. Я никогда не делал модульное тестирование или TDD раньше. Должен ли я переписать его, чтобы удалить бизнес-логику из классов пользовательского интерфейса (много работы)? Или есть лучший способ?

Ответы [ 11 ]

0 голосов
/ 09 апреля 2010

Я думаю, что всегда полезно отделить бизнес-логику от пользовательского интерфейса. В этом есть несколько преимуществ, в том числе более простое модульное тестирование и расширяемость. Вы также можете обратиться к программированию на основе шаблонов. Вот ссылка http://en.wikipedia.org/wiki/Design_pattern_(computer_science), которая поможет вам понять шаблоны проектирования.

В настоящее время вы можете сделать одну вещь: в ваших классах пользовательского интерфейса изолировать все бизнес-логику и различные функции бизнес-баз, а затем в каждом конструкторе пользовательского интерфейса или в page_load есть вызовы модульного теста, которые проверяют каждую из бизнес-функций. Для улучшения читаемости вы можете применить тег #region к бизнес-функциям.

Для вашей долгосрочной выгоды вы должны изучить шаблоны проектирования. Выберите шаблон, который соответствует потребностям вашего проекта, и переделайте ваш проект, используя шаблон дизайна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...