Вы можете сделать это, см. Ответ Мэтта Лахмана. Однако этот подход не рекомендуется. Это немного хаки.
Наилучшим подходом было бы делегировать создание ваших зависимых объектов шаблон фабрики и ввести заводы в свой A
класс:
class BFactory {
public B newInstance() {
return new B();
}
}
class CFactory {
public C newInstance() {
return new C();
}
}
class A {
private final BFactory bFactory;
private final CFactory cFactory;
public A(final BFactory bFactory, final CFactory cFactory) {
this.bFactory = bFactory;
this.cFactory = cFactory;
}
public void f() {
B b = bFactory.newInstance();
C c = cFactory.newInstance();
}
}
Вы бы тогда издеваться заводы возвращать фиктивные экземпляры зависимых классов ,
Если по каким-то причинам это не является жизнеспособным, то ваш может создать фабричные методы в A
классе
class A {
public void f() {
B b = newB();
C c = newC();
}
protected B newB() {
return new B();
}
protected C newC() {
return newC();
}
}
Затем вы можете использовать spy
что издевается эти фабричные методы.
Да, как и мой ответ, но с более подробной информацией – AlexWien
Есть только так много способов кошки кошки. И только пара правильных ... –
«Вы не можете» это неправда. PowerMock позволяет вам издеваться над конструкторами. См. Здесь: https://code.google.com/p/powermock/wiki/MockConstructor –