2010-01-20 1 views
3

У меня есть уровень бизнес-логики с широким спектром классов и их соответствующими методами. Создание модульного теста для метода, как правило, дано, но в некоторых случаях метод действительно просто возвращает набор совпадающих записей из базы данных. Кажется глупым написать Unit Test, скажем, хранить пять совпадающих записей, а затем вызвать метод BLL и посмотреть, вернет ли он все пять записей.Должны ли вы использовать методы групповой проверки бизнес-логики, которые состоят в основном из запроса?

Что является лучшей практикой здесь? Что вы на самом деле do - в отличие от того, что вы хотели бы сказать, что в идеале?

+0

+1 для "Что вы на самом деле делаете" – lance

+0

Lol - thx. Я обычно проповедую примерно на одну ступень выше, чем на практике, когда графики жесткие. Это напоминает мне ... У меня есть отдельные тесты для написания. –

ответ

4

Я верю, что настоящий вопрос: почему у вас есть методы в вашем бизнес-логическом слое, которые, похоже, не содержат реальной бизнес-логики?

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

В любой ситуации я бы все же проверил метод. Есть несколько причин:

  1. Поскольку метод в слой бизнес-логики (в вашем случае), это возможно, что этот метод может в конечном итоге становится более активное участие. Добавление модульного теста теперь обеспечит, что даже в будущем, независимо от логики, этот метод все еще тестируется на неожиданное поведение.

  2. Если есть какая-либо логика (например, определение того, какие записи соответствуют бизнес-критериям), вам все равно придется проверить эту логику.

  3. Если вы закончите перемещение метода на уровень данных, вы должны проверить свой запрос на какой-то ложный репозиторий данных, чтобы убедиться, что ваши запросы работают. Таким образом, если ваши запросы станут более сложными в будущем ... вы охвачены.

+0

Причина использования этих методов заключается в том, что я бы вообще не имел никаких вызовов уровня данных в коде пользовательского интерфейса. В моем случае слой данных также довольно тонкий: интерфейс в свободном стиле, который упрощает запросы (вместе с генератором кода T-SQL, поэтому я обычно использую строго типизированные экземпляры класса при работе с данными). –

0

Я использую DBUnit, чтобы заполнить базу данных несколькими записями, больше чем должно быть возвращено запросом. Затем вызовите метод и убедитесь, что возвращены только правильные записи. Это гарантирует, что ваша логика запросов работает, и поможет поймать проблемы регрессии в будущем, если вы реорганизуете базу данных.

Смежные вопросы