2008-09-19 4 views

ответ

9

Вы должны создать подкласс, который реализует абстрактные методы (с пустыми методами), но ни один из конкретных. Этот подкласс должен быть только для тестирования (он никогда не должен входить в ваш производственный код). Просто игнорируйте переопределенные абстрактные методы в своих модульных тестах и ​​концентрируйтесь на конкретных методах.

+2

Кроме того, если у вас много таких (более 2 или 3), вы должны рассмотреть возможность использования насмешливой структуры, такой как Rhino.Mocks или Moq (бесплатно) или TypeMock (коммерческий), и сделать «PartialMock», который автоматизирует этот процесс для вас – chadmyers 2008-09-19 19:54:51

0

Любые причины не включать это только в тестирование одного из экземпляров?

Если это не сработает, возможно, вы можете создать подкласс только для тестирования без уникальной функциональности.

+0

Одна из причин может заключаться в том, что мы не определяем конкретные классы, а только абстрактные. В качестве альтернативы, приятно знать, когда тест терпит неудачу, что это не из-за одного из абстрактных методов. – 2008-09-19 20:15:32

1

Первое, что приходит в голову, - проверить эти методы в конкретном дочернем классе.

0

Я всегда использовать Stub/Mock объект

0

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

3

Использование Rhino Mocks, он может генерировать реализации абстрактного класса во время выполнения, и вы можете вызывать не абстрактные методы.

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