Как установить тестовые посетители на классах, которые не имеют парных получателей?

StackOverflow https://stackoverflow.com/questions/4644882

Вопрос

Я пишу модульные тесты для классов, которые имеют свойства, которые имеют Соседниты, но без GetTers.

Я хочу быть в состоянии Испытайте эти посетители Чтобы убедиться, что они правильно устанавливают данные.

Я нахожу свои варианты:

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

Но оба решения нежелательно Поскольку он добавляет ненужные функциональные возможности к классу только ради тестирования.

  • Я также мог проверить вывод класса, чтобы увидеть, что он правильно в целом, но во многих случаях это не тестирует отдельных загадок, как я хотел бы

Какой лучший способ установить тестовые сортировки на классах, которые не имеют парных получателей?

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

Решение

Проблема здесь заключается в том, что вы не хотите менять свою API для ваших модульных тестов. Начните смотреть на ваши модульные тесты в качестве другого пользователя / потребителя вашего API. Также как разработчики, использующие эту библиотеку, модульные тесты имеют собственный набор требований. Когда вы видите тесты своих подразделений как потребителя вашего API, будет пользователь, который использует эти GetTers, и оно оправдывает их.

Когда это невозможно изменить вашу API (например, если вы разрабатываете Reurable Framework), сделайте устройство для тестирования устройства API и используйте InternalsVisibleToAttribute Чтобы позволить вашей тестированию библиотеку доступа к внутренним методам вашего кода.

Оставление единиц тестирует в сторону, вы все равно можете подумать о том, что имея Getter на этих свойствах, потому что имеющие свойства без GetTers очень неразрушают для разработчиков. То Рекомендации Рамочной конструкции Даже есть правило против этого:

НЕ Обеспечить установленные только свойства или свойства с установкой, имеющим более широкую доступность, чем Gotter.

Вы также можете принять это принять это во внимание.

Удачи.

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

Вы могли бы использовать PrivateObject. Чтобы убедиться, что частные участники были правильно обновлены после вызова сеттера

У посетителей есть какая-то логика?

Да: либо откройте Gotter. Java: защищена и имеет тест подразделения в том же пакете. C #: InternalsVisibletattribute.

Нет: Не устанавливайте поселенцы напрямую. Нет смысла. Проверьте методы, которые используют данные, установленные устойчивыми.

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