Джентельмены, кто-нибудь решал проблему создания unit-тестов для интернальных классов в проекте?
Студия конечно умеет генерить вызов таких методов через reflection, но только если там не нашлось non-public generic параметров (строка ошибки: "Unit Test Generation Error: A private accessor could not be created for ...: Generic parameters with non-public type parameters are not supported")
Пока видятся следующие вариант: или открывать внутренние служебные классы наружу; или встраивать тесты прямо в проект и настраивать различные конфигурации компиляции.
Оба варианта кажутся корявыми. Буду благодарен за любые разумные советы.
Здравствуйте, kaer, Вы писали:
K>Джентельмены, кто-нибудь решал проблему создания unit-тестов для интернальных классов в проекте? K>Студия конечно умеет генерить вызов таких методов через reflection, но только если там не нашлось non-public generic параметров (строка ошибки: "Unit Test Generation Error: A private accessor could not be created for ...: Generic parameters with non-public type parameters are not supported")
Здравствуйте, kaer, Вы писали:
K>Джентельмены, кто-нибудь решал проблему создания unit-тестов для интернальных классов в проекте? K>Студия конечно умеет генерить вызов таких методов через reflection, но только если там не нашлось non-public generic параметров (строка ошибки: "Unit Test Generation Error: A private accessor could not be created for ...: Generic parameters with non-public type parameters are not supported") K>Пока видятся следующие вариант: или открывать внутренние служебные классы наружу; или встраивать тесты прямо в проект и настраивать различные конфигурации компиляции. K>Оба варианта кажутся корявыми. Буду благодарен за любые разумные советы.
Есть третий (правильный) вариант: интернал классы — это сугубо личное дело сборки, и как они реализованы, unit-test-у должно быть монопенисуально.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, kaer, Вы писали:
K>>Джентельмены, кто-нибудь решал проблему создания unit-тестов для интернальных классов в проекте? K>>Студия конечно умеет генерить вызов таких методов через reflection, но только если там не нашлось non-public generic параметров (строка ошибки: "Unit Test Generation Error: A private accessor could not be created for ...: Generic parameters with non-public type parameters are not supported") K>>Пока видятся следующие вариант: или открывать внутренние служебные классы наружу; или встраивать тесты прямо в проект и настраивать различные конфигурации компиляции. K>>Оба варианта кажутся корявыми. Буду благодарен за любые разумные советы.
L>Есть третий (правильный) вариант: интернал классы — это сугубо личное дело сборки, и как они реализованы, unit-test-у должно быть монопенисуально.
Интернальные классы относятся к парсингу. Отдавать их наружу вообще не нужно. Тестировать хочется. Где тут монопенисуальность?
Здравствуйте, VladGalkin, Вы писали:
VG>Здравствуйте, kaer, Вы писали:
K>>Джентельмены, кто-нибудь решал проблему создания unit-тестов для интернальных классов в проекте? K>>Студия конечно умеет генерить вызов таких методов через reflection, но только если там не нашлось non-public generic параметров (строка ошибки: "Unit Test Generation Error: A private accessor could not be created for ...: Generic parameters with non-public type parameters are not supported")
Здравствуйте, kaer, Вы писали:
K>Здравствуйте, VladGalkin, Вы писали:
VG>>Здравствуйте, kaer, Вы писали:
K>>>Джентельмены, кто-нибудь решал проблему создания unit-тестов для интернальных классов в проекте? K>>>Студия конечно умеет генерить вызов таких методов через reflection, но только если там не нашлось non-public generic параметров (строка ошибки: "Unit Test Generation Error: A private accessor could not be created for ...: Generic parameters with non-public type parameters are not supported")
Здравствуйте, kaer, Вы писали:
L>>Есть третий (правильный) вариант: интернал классы — это сугубо личное дело сборки, и как они реализованы, unit-test-у должно быть монопенисуально.
K>Интернальные классы относятся к парсингу. Отдавать их наружу вообще не нужно. Тестировать хочется. Где тут монопенисуальность?
В выделенном. internal класс — деталь реализации модуля. Внешний (в том числе код юнит-такта) не должно интересовать как оно там внутри устроено. Надо тестировать что модуль правильно работает, то есть заданным входным данным выдает на выходе то, что мы ожидаем.
Здравствуйте, Lloyd, Вы писали:
L>В выделенном. internal класс — деталь реализации модуля. Внешний (в том числе код юнит-такта) не должно интересовать как оно там внутри устроено. Надо тестировать что модуль правильно работает, то есть заданным входным данным выдает на выходе то, что мы ожидаем.
black box testing, короче говоря, но этим все не ограничивается. Можно долго флеймить на эту тему.