Вопрос

как писать модульные тесты во внутренние классы???

Это было полезно?

Решение

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

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

Другие советы

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

При использовании MS Visual Studio для модульных тестов вам нужно просто создать частный аксессор.Я думаю, что внутри это работает с отражениями.Просто взгляните на сгенерированный код.

Вы не тестируете это напрямую.Он будет протестирован через класс, в котором он определен.

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

Мы использовали вспомогательный класс, который использует отражение для загрузки и вызова методов внутренних классов.Также возможно изменить доступность во время компиляции, используя символ DEBUG, например

#if DEBUG
public
#else
internal
#endif
    class MyInternalClass
{
    ...
}

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

Подробные пояснения см. http://msdn.microsoft.com/en-us/library/bb385974.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top