จำลองวิธีการคงที่จากหลายคลาสโดยใช้ PowerMock


104

ฉันรู้วิธีจำลองวิธีการแบบคงที่จากคลาสโดยใช้ PowerMock
แต่ฉันต้องการจำลองวิธีการแบบคงที่จากหลายคลาสในคลาสทดสอบโดยใช้ JUnit และ PowerMock

ใครช่วยบอกทีว่าทำได้ไหมและต้องทำอย่างไร


1
คุณก็ทำในลักษณะเดียวกับที่คุณล้อเลียนวิธีการจากคลาสเดี่ยว คุณติดอยู่ที่ไหน?
artbristol

เมื่อใช้ powermock คุณต้องเพิ่มคำอธิบายประกอบนี้ในคลาสทดสอบ @PrepareForTest (ClassThatContainsStaticMethod.class) แต่เราไม่สามารถระบุคำอธิบายประกอบได้หลายรายการ แล้วต้องทำอย่างไร?
Newbie

คำตอบ:


259

เพียงแค่ทำ@PrepareForTest({Class1.class,Class2.class})หลายชั้นเรียน


11
ดัดฟัน! นั่นคือสิ่งที่ฉันขาดหายไป
sudocoder

2
อย่าลืมเปลี่ยนเป็น PowerMockRunner ด้วย@RunWith(PowerMockRunner.class)ในระดับชั้นเรียน
Nikita Barishok

1
@NikitaBarishok ไม่จำเป็นเสมอไป คุณสามารถกำหนดกฎแทนเพื่อให้ทำงานด้านบนได้ -@Rule public PowerMockRule rule = new PowerMockRule();
Aniket Thakur

5
ใน kotlin@PrepareForTest(Class1::class, Class2::class))
Ryhan

ก็ยังดีกว่าที่จะใช้แทน@PrepareOnlyThisForTest @PrepareForTestหลังยังปรับเปลี่ยน superclasses ซึ่งปกติไม่จำเป็น
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ในระดับวิธี (ใช้ได้เฉพาะในระดับชั้นสำหรับฉัน)
Nikita Barishok

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)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.