Vous pouvez le faire en créant une méthode d'usine dans MyObject :
class MyObject {
public static MyObject create() {
return new MyObject();
}
}
puis le simuler avec PowerMock .
Cependant, en simulant les méthodes d'un objet de portée locale, vous dépendez de la partie de l'implémentation de la méthode qui reste la même. Vous perdez donc la possibilité de remanier cette partie de la méthode sans rompre le test. En outre, si vous bloquez les valeurs de retour dans l'objet fantaisie, votre test unitaire peut réussir, mais la méthode peut se comporter de manière inattendue lorsqu'elle utilise l'objet réel.
En résumé, vous ne devriez probablement pas essayer de le faire. En laissant plutôt le test piloter votre code (aka TDD), vous arriveriez à une solution comme celle-ci :
void method1(MyObject obj1) {
obj1.method1();
}
en passant la dépendance, que vous pouvez facilement simuler pour le test unitaire.