Создание открытых методов в классе, а не в интерфейсе - PullRequest
0 голосов
/ 12 ноября 2018

Я столкнулся с вопросом, является ли хорошей идеей создание открытых методов / свойств внутри класса

public class MyClass : IMyClass

но не в интерфейсе

public interface IMyClass

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

С другой стороны, у меня есть ощущение, что все общедоступное внутри MyClass должно быть открыто в интерфейсе IMyClass, так как это случай модификаторов доступа: public чтобы раскрыть информацию, private чтобы скрыть детали.

Итак, мой вопрос: хорошо ли создавать открытые методы / свойства внутри класса MyClass, но не в интерфейсе IMyClass?

1 Ответ

0 голосов
/ 12 ноября 2018

Тест должен быть клиентом вашего кода, использующего ваш код через его интерфейс.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...