Могу ли я имитировать конструктор суперкласса с помощью Mockito/Powermock?

Можно ли с помощью Mockito и, при необходимости, Powermock имитировать суперкласс S, чтобы любые вызовы суперкласса S(включая вызовы S()] конструктор) высмеиваются? Итак, используя приведенный ниже пример, если я заменю Sна MockSс помощью Mockito, будет ли вызов super()использовать конструктор в MockS?

class S {
   S() {
      // Format user's hard drive, call 911, and initiate self-destruct
   }
}

class T extends S {
   T() {
      super();
   }
}

class Test {
   @Mock private S mockS;
   new T(); // T's call to super() should call the mock, not the destructive S.
}

Я видел вопросы об имитации отдельных методов в Sили имитации только вызовов super()и читал, что это не поддерживается, но неясно, действительно ли я может издеваться над всем суперклассом.

В моих текущих тестах, когда я пытаюсь имитировать S, вызов Tк super()вызывает реальную реализацию, а не макет.

7
задан Jeff Axelrod 31 March 2012 в 16:56
поделиться