я следующий кодМодульное тестирование Взаимодействие методов в одном классе в C#
public ClassToTest : IClassToTest
{
private readonly DBRepository rep;
public bool MethodA()
{
//Some logic
var result=MethodB();
//Do some logic against result;
}
public ResultType MethodB()
{
return Rep.GetResult();
}
}
Если я хочу модульного тестирования Methoda, что лучшая практика, чтобы проверить взаимодействие между Methoda и MethodB? Я имею в виду, чтобы проверить Methoda как тестирование MethodB насмехаясь над зависимостью базы данных Rep, так же, как Methoda имеет следующую реализацию
public bool MethodA()
{
//Some logic
var result=Rep.GetResult();
//Do some logic against result;
}
Но это не интуитивно, проверяя логику в коде и метод испытания. Я ищу решение, подобное описанному здесь для Java.
unit testing composite service methods
Но это не работает на C#.
Один дополнительный вопрос, что, если MethodB является конфиденциальным, не имеет значения для стратегии тестирования устройства?
Обновление: предпочитают не изменять структуру класса. например, не сделать MethodB виртуальным или переместить методB из класса в другой тест
Заранее спасибо.
Спасибо, Джей. Думаю, это ответ. Я просто беспокоюсь о том, что метод тестирования не соответствует логике ** MethodA **. которые могут иметь меньшую удобочитаемость, если метод тестирования имеет сложную логику. – Zhao
@zhaow Можете ли вы объяснить, что вы имеете в виду, когда говорите, что метод тестирования не соответствует логике MethodA? – Jay
Итак, вызывающая иерархия - MethodA => MethodB => Rep.GetResult(), при модульном тестировании для MethodB я уже тестировал MethodB => Rep.GetResult(). Затем, когда я тестирую MethodA, я чувствую, что более ясный и интуитивный тест MethodA => MethodB. Но если логика MethodB и MethodA не сложна, то проверяется MethodA => Rep.GetResult(). – Zhao