Э-э-э ... Пришла вот такая же проблема: проверить простой , но ключевой приватный метод.После прочтения этой темы, похоже, что «я хочу просверлить эту простую дыру в этом простом куске металла, и я хочу убедиться, что качество соответствует спецификациям», а затем приходит «Хорошо, это не такЛегко. Прежде всего, нет подходящего инструмента для этого, но вы можете построить обсерваторию гравитационных волн в своем саду. Прочитайте мою статью на http://foobar.brigther -than-einstein.org / СначалаКонечно, вы должны посещать некоторые курсы квантовой физики, затем вам нужны тонны ультра-холодного азотия, и, конечно, моя книга доступна на Amazon "...
В другихслова ...
Нет, обо всем по порядку.
Каждый метод, будь то частный, внутренний, защищенный, публичный , должен иметь для тестирования.Должен быть способ реализовать такие тесты без лишних слов, которые были представлены здесь.
Почему?Точно , потому что из архитектурных упоминаний сделано некоторыми авторами.Возможно, простое повторение принципов программного обеспечения может устранить некоторые недоразумения.
В этом случае обычные подозреваемые: OCP, SRP и, как всегда, KIS.
Но подождите минуту.Идея сделать все публично доступным является скорее менее политической и некой позицией.Но.Когда дело доходит до кода, даже в тогдашнем Open Source Community, это не догма.Вместо этого «сокрытие» чего-либо является хорошей практикой, чтобы облегчить знакомство с определенным API.Например, вы бы скрывали самые основные расчеты вашего нового рыночного строительного блока цифрового термометра - не для того, чтобы скрыть математику за реальной измеренной кривой для любопытных читателей кода, но чтобы предотвратить зависимость вашего кода от некоторых,возможно, неожиданно важные пользователи, которые не могли удержаться от использования своего ранее частного, внутреннего, защищенного кода для реализации своих собственных идей.
О чем я говорю?
private double TranslateMeasurementIntoLinear (double actualMeasurement);
Легко объявить Эру Водолея или то, что в наши дни называют, но если мой сенсор получит от 1.0 до 2.0, реализация Translate ... может измениться спростое линейное уравнение, которое легко понять и «повторно использовать» для всех, для довольно сложного вычисления, использующего анализ или что-то еще, и поэтому я бы нарушил код другого.Зачем?Потому что они не понимали самих принципов программного кодирования, даже не KIS.
Короче говоря, нам нужна короткая сказка: нам нужен простой способ тестирования частных методов - без лишних слов.
Первое: всех с наступающим Новым годом!
Второе: репетируйте уроки вашего архитектора.
Третье: модификатор "public" - это религия, а не решение.