คุณไม่สามารถทำได้เนื่องจากตามข้อมูลจำเพาะคุณไม่สามารถใส่คำอธิบายประกอบเดียวกันซ้ำสองครั้งในองค์ประกอบคำอธิบายประกอบเดียวกันได้
แล้วทางออกคืออะไร? วิธีแก้ปัญหาคือใส่เพียงหนึ่งเดียว@RunWith()
กับนักวิ่งที่คุณไม่สามารถยืนได้โดยปราศจากและแทนที่คนอื่นด้วยสิ่งอื่น ในกรณีของคุณฉันเดาว่าคุณจะลบออกMockitoJUnitRunner
และดำเนินการตามโปรแกรม
ในความเป็นจริงสิ่งเดียวที่มันทำงาน:
MockitoAnnotations.initMocks(test);
ในจุดเริ่มต้นของกรณีทดสอบ ดังนั้นทางออกที่ง่ายที่สุดคือใส่รหัสนี้ลงในsetUp()
method:
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
ผมไม่แน่ใจ แต่อาจจะเป็นคุณควรหลีกเลี่ยงหลายสายของวิธีการนี้ใช้ธง:
private boolean mockInitialized = false;
@Before
public void setUp() {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
อย่างไรก็ตามวิธีที่ดีกว่าอาจใช้วิธีแก้ปัญหาที่ใช้ซ้ำได้กับกฎของ JUnt
public class MockitoRule extends TestWatcher {
private boolean mockInitialized = false;
@Override
protected void starting(Description d) {
if (!mockInitialized) {
MockitoAnnotations.initMocks(this);
mockInitialized = true;
}
}
}
ตอนนี้เพียงเพิ่มบรรทัดต่อไปนี้ในชั้นเรียนทดสอบของคุณ:
@Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
และคุณสามารถเรียกใช้กรณีทดสอบนี้กับนักวิ่งคนใดก็ได้ที่คุณต้องการ