Давайте предположим, что Я, чтобы проверить эту Java ClassA
, что зависит от трудно инстанцирует ClassB
:Рекомендации по тестированию модулей: пустой конструктор или макет объекта?
public class ClassA
{
public ClassA()
{
String configFile = "config_file.xml";
// I have to pass configFile to instantiate ClassB.
// And for example if configFile does not exists in the testing machine?
// Wouldn't it be easier to have an empty constructor for classB to test ClassA?
ClassB classB = new ClassB(configFile);
}
// ...
}
ClassB
:
class ClassB
{
ClassB(String configFile)
{
// Set up configs.
}
// ...
}
Это плохая практика, чтобы создать пустой конструктор внутри classB
только для тестирования? Или лучше переписать упрощенный макет ClassB
для этого?
Кажется, что ваш был бы подходящим сценарием для IoC и Injection Dependency. Таким образом, ClassA просто объявит, что «нужен» экземпляр класса B, и ваш контейнер IoC подключится и построит необходимые зависимости. И в случае вашего модульного теста вы должны настроить вымышленный экземпляр ClassB для тестирования ClassA. Вы слышали о IoC и DI? –
Спасибо, я посмотрю на них. – mt22