Знущайтеся над статичними методами з декількох класів, використовуючи PowerMock


103

Я знаю, як знущатися над статичними методами з класу за допомогою PowerMock.
Але я хочу знущатися над статичними методами з декількох класів тестового класу за допомогою JUnit та PowerMock.

Хтось може сказати мені, чи можна це зробити і як це зробити?


1
Ви просто робите це так само, як ви знущаєтесь з методів з окремих класів. Де ти застряг?
artbristol

Під час використання powermock вам потрібно додати цю примітку до тестового класу @PrepareForTest (ClassThatContainsStaticMethod.class). Але ми не можемо вказати кілька анотацій. То як це зробити?
Новачок

Відповіді:


257

Просто робіть @PrepareForTest({Class1.class,Class2.class})для декількох класів.


11
фігурні дужки! це те, чого я бракував.
sudocoder

2
Також не забудьте перейти на PowerMockRunner @RunWith(PowerMockRunner.class)на рівні класу
Микита Баришок

1
@NikitaBarishok не завжди потрібен. Ви можете замість цього зробити правило, щоб зробити роботу вище -@Rule public PowerMockRule rule = new PowerMockRule();
Aniket Thakur

5
in kotlin@PrepareForTest(Class1::class, Class2::class))
Ryan

Також краще використовувати @PrepareOnlyThisForTestзамість @PrepareForTest. Останній також модифікує суперкласи, які зазвичай не потрібні.
www.Decompiler.com

12
@Test
 @PrepareForTest({Class1.class, Class2.class})
 public final void handleScript() throws Exception {
    PowerMockito.mockStatic(Class1.class);
    PowerMockito.mockStatic(Class2.class);

тощо ...


Що стосується PowerMock 1.6.5проблем із використанням @PrepareForTestметоду (для мене працює лише на рівні класу)
Микита Баришок

2

У Java з powermock / junit використовуйте @PrepareForTest({})стільки статичних класів, скільки ви хочете, як array ( {}).

@RunWith(PowerMockRunner.class)
@PrepareForTest({XmlConverterA.class, XmlConverterB.class})
class TransfersServiceExceptionSpec {

}

Я використовував powermock з у програмі scala / junit, оскільки scalatest не має інтеграції з powermock.

@RunWith(classOf[PowerMockRunner])
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB]))
class TransfersServiceExceptionSpec {

  @Test
  def test() {
  }
}

1

Якщо ви використовуєте kotlin, синтаксис такий

@PrepareForTest(ClassA::class, ClassB::class)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.