PowerMock을 사용하여 여러 클래스에서 정적 메서드 모의


103

PowerMock을 사용하여 클래스에서 정적 메서드를 모의하는 방법을 알고 있습니다.
하지만 JUnit과 PowerMock을 사용하여 테스트 클래스의 여러 클래스에서 정적 메서드를 모의하고 싶습니다.

누구든지 이것이 가능하고 어떻게 할 수 있는지 말해 줄 수 있습니까?


1
단일 클래스에서 메소드를 모의하는 것과 동일한 방식으로 수행합니다. 어디에 갇혀 있습니까?
artbristol 2012

powermock을 사용할 때 테스트 클래스 @PrepareForTest (ClassThatContainsStaticMethod.class)에이 주석을 추가해야합니다. 그러나 여러 주석을 지정할 수 없습니다. 그래서 어떻게할까요?
Newbie

답변:


257

@PrepareForTest({Class1.class,Class2.class})여러 클래스에 대해 수행하십시오 .


11
중괄호! 그게 내가 놓친 것입니다.
sudocoder

2
또한 함께 PowerMockRunner로 전환하는 것을 잊지 마세요 @RunWith(PowerMockRunner.class)클래스 수준에
니키타 Barishok에게

1
@NikitaBarishok 항상 필요한 것은 아닙니다. 당신은 위의 작업을 대신하는 규칙을 정의 할 수 있습니다 -@Rule public PowerMockRule rule = new PowerMockRule();
아니 켓 타쿠에게

5
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(나만을위한 클래스 레벨에서 작동) 메소드 레벨에
니키타 Barishok

2

powermock / junit를 사용 @PrepareForTest({})하는 Java에서는 배열 ( {}) 만큼 원하는만큼의 정적 클래스와 함께 사용 합니다.

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

}

내가 사용하고 , 스칼라 /의 JUnit에서와 powermock을 scalatest이 powermock과의 통합을 가지고 있지 않기 때문에.

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

  @Test
  def test() {
  }
}

1

kotlin을 사용하는 경우 구문은 다음과 같습니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.