Мне нравится модульное тестирование, оно доказывает свою ценность в течение последних полутора лет, или около того, когда я его использовал.Тем не менее, у меня всегда есть проблема или, скорее, проблема с закрытыми методами (и защищенными).
Я не хочу делать их общедоступными или использовать внутренние компоненты, видимые для атрибута.Мне нужно чистое и четкое решение - это тестируемое, и я с гордостью позволю кому-то еще взглянуть на него.
Я прихожу к выводу, что если частный метод действительно нуждается в тестированииНезависимо от этого, возможно, его следует перенести на другой интерфейс и использовать ассоциацию для предоставления функциональности вызывающему методу.Я считаю, что это, по сути, шаблон Фасада.
Действительно ли это лучший способ сделать это?Или более объективно ... есть ли другие подходы, которые я полностью упустил из виду?
Редактировать: Мы говорим о конкретном языке?Я работаю в C #.Я держал код вне вопроса, когда искал что-то абстрактное.Возвращаясь к этому сегодня, я понимаю, что, возможно, это глупость из-за того, что языки действительно отличаются друг от друга.
Так что некоторый код:
public class CopmlexClass
{
public void SomeMethod()
{ }
private void workerMethod()
{ }
}
будет преобразован в
public class CopmlexClass
{
public void SomeMethod()
{ }
public IComplexClassWorker Worker { get; set; }
}
public interface IComplexClassWorker
{
void WorkerMethod();
}
На самом деле id, вероятно, предпочитают использовать инжектор конструктора и даже не выставлять свойство
Мой вопрос: это лучший способ?Какие альтернативные отражения / внутренние элементы видимы для атрибута?