2014-04-09 4 views
0

В моем проекте много статических методов, и все они inturn попадают в БД. Я должен написать Unit Test для проекта, но часто поражаюсь, поскольку все методы статичны, и они попадают в БД. Есть ли способ преодолеть это. Извините за абстрактность в вопросе, но моя забота - это то, как написать единичный тест для статических методов и тех, кто попадает в БД. MOQ не полезно, когда методы статичны, а также в моем проекте один метод вызывает другой метод в пределах одного класса. Таким образом, в этом случае я не могу использовать MOQ внутри метода, поскольку оба находятся в одном классе.Записывать единичные тесты для статических методов

+5

Похоже, вы пытаетесь написать модульные тесты после написания производственного кода. В этой книге рассматривается книга [Эффективная работа с устаревшим кодом] (http://amzn.to/Vzxdhd). –

ответ

4

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

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

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

Другой вариант был бы (я знаю, что многие люди делают это с унаследованным кодом), чтобы использовать одну из этих дорогостоящих инфраструктур изоляции, таких как Isolator, MS Fakes, возможно, для подделки этих не проверяемых зависимостей. После того, как эти тесты написаны, вы можете посмотреть, как изменить код, чтобы сделать его более проверяемым.

+1

Да, в настоящее время я пишу только тест интеграции. Я понимаю ваше решение. Я не уверен, насколько это поможет моей ситуации, но попытается их реализовать. – Wilson

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