È buona pratica fare aggiunte di più costruttori solo a scopo di test (per deridere i DOC usati nel mio SUT) in questo modo:
public class A {
private B b = new B();
private C c = new C();
public A(){
}
/***
* used for test puproses
* @param a
* @param b
*/
A(A a, B b) {
// overwrite the existing variables
this.a = a;
this.b = b;
}
}
class B {
}
class C {
}
Nota che costringo la nuova visibilità del costruttore a essere privata del pacchetto, non a inquinare l'api del SUT e anche a istanziare i DOC all'interno del SUT per la comodità d'uso del client.
SUT: System under test (A)
DOC: depended-on component (B and C)
Che ne pensi? Grazie in anticipo.