Я хочу сделать то же самое, и мы находим это необходимым.
Текущий механизм, который мы используем, довольно ручной, но он работает.
Скажем, к примеру, вы хотите смоделировать bean-компонент типа Y. То, что мы делаем, - это каждый bean-компонент, имеющий эту зависимость, которую мы создаем для реализации интерфейса - "IHasY". Этот интерфейс
interface IHasY {
public void setY(Y y);
}
Затем в нашем тесте мы вызываем метод util ...
public static void insertMock(Y y) {
Map invokers = BeanFactory.getInstance().getFactory("core").getBeansOfType(IHasY.class);
for (Iterator iterator = invokers.values().iterator(); iterator.hasNext();) {
IHasY invoker = (IHasY) iterator.next();
invoker.setY(y);
}
}
Я не хочу создавать целый XML-файл просто для внедрения этой новой зависимости, и именно поэтому мне это нравится.
Если вы хотите создать конфигурационный файл xml, то вам нужно будет создать новую фабрику с фиктивными компонентами и сделать фабрику по умолчанию родителем этой фабрики. Затем убедитесь, что вы загружаете все ваши бины из новой дочерней фабрики. При этом суб-фабрика переопределит bean-компоненты в родительской фабрике, когда идентификаторы bean-идентификаторов совпадают.
Теперь, если бы в моем тесте, если бы я мог программно создать фабрику, это было бы здорово. Необходимость использовать XML слишком громоздка. Я ищу, чтобы создать эту дочернюю фабрику с кодом. Тогда каждый тест может настроить свой завод так, как он хочет. Нет причины, по которой такая фабрика не будет работать.