2012-06-27 1 views
1

Я ищу пример, иллюстрирующий трудности при тестировании класса static class vs. instance. Может ли кто-нибудь его предоставить?Пример трудностей при тестировании статических классов (C#)

+0

Ну, как же проверить класс для разницы во времени, если он использует 'DateTime .Now'? – Oded

+0

Возможно, вы захотите проверить [этот ответ] (http://stackoverflow.com/a/10633109/343266). –

+0

Поиск SO [вверху справа] со «статическим [unit-testing]». Вы найдете много сложностей. Статические классы с чистыми функциями нетрудно проверить - например, методы класса Math. Читайте также: http://stackoverflow.com/a/4222788/1695 – Gishu

ответ

1

Говорят, что класс, который использует другие типы, имеет зависимости от других типов. Когда вы тестируете метод в классе, вы обычно пытаетесь проверить, что делает этот метод, а не то, что делают зависимости. Обычный способ настроить ваши объекты для поддержки этих сценариев - использовать dependency injection. Инъекционная инъекция - это общий шаблон, который повышает тестируемость. Статические классы плохо работают с этим шаблоном, что делает модульное тестирование классов, которые используют статические классы.

Например, если у вас есть класс «A», который вы хотите протестировать, и он использует статический класс «B», который делает то, что вы не хотите тестировать, например, попадание в базу данных, класс A теперь трудно проверить.

class A 
{ 
    // this is hard to test because of the static call through B 
    public void MethodToTest() 
    { 
     // ... 
     B.HitTheDatabase(); 
     // ... 
    } 
} 

Есть способы обойти это, например, писать обертки вокруг B и впрыскиванием в А, или с помощью Moles рамки

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

  • Нет связанных вопросов^_^