คำถามติดแท็ก mockito

Mockito เป็นกรอบการเยาะเย้ยสำหรับ Java มันเป็นแรงบันดาลใจจาก EasyMock แต่มีจุดมุ่งหมายเพื่อลดความยุ่งยากจำลองการตรวจสอบและการใช้เครื่องมือยิ่งขึ้น


6
Mockito + PowerMock LinkageError ขณะที่ล้อเลียนคลาสระบบ
ฉันได้รับข้อมูลโค้ดแล้ว: @RunWith(PowerMockRunner.class) @PrepareForTest({Thread.class}) public class AllMeasuresDataTest { @Before public void setUp() throws Exception { } @Test public void testGetMeasures() { AllMeasuresData measure = new AllMeasuresData(); assertEquals(measure.getMeasures(), null); HashMap<String, Measure> map = new HashMap<String, Measure>(); measure.setMeasures(map); assertEquals(measure.getMeasures(), map); measure.setMeasures(null); assertEquals(measure.getMeasures(), null); } @Test public void testAllMeasuresData() throws IOException { ClassLoader loader …

3
จะใช้ ArgumentCaptor เพื่อทำการขัดได้อย่างไร?
ในเอกสาร Mockito และjavadocsนั้นระบุไว้ ขอแนะนำให้ใช้ ArgumentCaptor กับการตรวจสอบ แต่ไม่ใช่ด้วยการขัด แต่ฉันไม่เข้าใจว่า ArgumentCaptor สามารถใช้สำหรับขัดถูได้อย่างไร บางคนสามารถอธิบายข้อความข้างต้นและแสดงให้เห็นว่า ArgumentCaptor สามารถใช้สำหรับการขัดหรือจัดเตรียมลิงก์ที่แสดงวิธีการทำ

5
Mockito จับคู่อาร์กิวเมนต์ของคลาสใด ๆ
มีวิธีจับคู่อาร์กิวเมนต์คลาสใด ๆ ของรูทีนตัวอย่างด้านล่างหรือไม่? class A { public B method(Class<? extends A> a) {} } ฉันจะส่งคืนnew B()คลาสโดยไม่คำนึงว่าคลาสใดถูกส่งเข้ามาเสมอmethod? ความพยายามต่อไปนี้ใช้สำหรับกรณีเฉพาะที่Aตรง A a = new A(); B b = new B(); when(a.method(eq(A.class))).thenReturn(b); แก้ไข : ทางออกหนึ่งคือ (Class<?>) any(Class.class)

9
วิธีจับคู่ varargs ใน Mockito อย่างถูกต้อง
ฉันพยายามจำลองวิธีด้วยพารามิเตอร์ vararg โดยใช้ Mockito: interface A { B b(int x, int y, C... c); } A a = mock(A.class); B b = mock(B.class); when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, a.b(1, 2)); สิ่งนี้ใช้ไม่ได้อย่างไรก็ตามถ้าฉันทำสิ่งนี้แทน: when(a.b(anyInt(), anyInt())).thenReturn(b); assertEquals(b, a.b(1, 2)); ใช้งานได้แม้ว่าฉันจะไม่ได้โต้แย้งอาร์กิวเมนต์ varargs ทั้งหมดเมื่อทำการขัดวิธี เบาะแสใด ๆ

2
ตรวจพบ Stubbing ที่ยังไม่เสร็จใน Mockito
ฉันได้รับข้อยกเว้นต่อไปนี้ขณะทำการทดสอบ ฉันใช้ Mockito เพื่อการเยาะเย้ย คำแนะนำที่กล่าวถึงโดยห้องสมุด Mockito ไม่ได้ช่วยอะไร org.mockito.exceptions.misusing.UnfinishedStubbingException: Unfinished stubbing detected here: -> at com.a.b.DomainTestFactory.myTest(DomainTestFactory.java:355) E.g. thenReturn() may be missing. Examples of correct stubbing: when(mock.isOk()).thenReturn(true); when(mock.isOk()).thenThrow(exception); doThrow(exception).when(mock).someVoidMethod(); Hints: 1. missing thenReturn() 2. you are trying to stub a final method, you naughty developer! at a.b.DomainTestFactory.myTest(DomainTestFactory.java:276) .......... DomainTestFactoryรหัสการทดสอบจาก เมื่อฉันรันการทดสอบต่อไปนี้ฉันเห็นข้อยกเว้น @Test public …
151 java  mocking  mockito 

9
ฟังก์ชั่นหลามเยาะเย้ยตามข้อโต้แย้งอินพุต
เราใช้Mockกับ python มาระยะหนึ่งแล้ว ตอนนี้เรามีสถานการณ์ที่เราต้องการจำลองฟังก์ชั่น def foo(self, my_param): #do something here, assign something to my_result return my_result โดยปกติวิธีการเยาะเย้ยนี้จะเป็น (สมมติว่าเป็นส่วนหนึ่งของวัตถุ foo) self.foo = MagicMock(return_value="mocked!") แม้ว่าฉันจะโทรหา foo () สองครั้งฉันก็สามารถใช้ได้ self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"]) ตอนนี้ฉันกำลังเผชิญสถานการณ์ที่ฉันต้องการคืนค่าคงที่เมื่อพารามิเตอร์อินพุตมีค่าเฉพาะ ถ้าสมมุติว่า "my_param" เท่ากับ "อะไรบางอย่าง" แล้วฉันต้องการคืน "my_cool_mock" ดูเหมือนว่าจะมีให้ในmockito สำหรับไพ ธ อน when(dummy).foo("something").thenReturn("my_cool_mock") ฉันค้นหาวิธีการที่จะประสบความสำเร็จกับ Mock โดยไม่ประสบความสำเร็จได้อย่างไร ความคิดใด ๆ

2
ความแตกต่างระหว่าง @Mock, @MockBean และ Mockito.mock ()
เมื่อสร้างการทดสอบและจำลองการอ้างอิงความแตกต่างระหว่างสามแนวทางนี้คืออะไร? @MockBean: @MockBean MyService myservice; @Mock: @Mock MyService myservice; Mockito.mock () MyService myservice = Mockito.mock(MyService.class);

1
Java ตรวจสอบวิธีการโมฆะเรียก n ครั้งด้วย Mockito
ฉันกำลังพยายามตรวจสอบว่ามีการเรียกเมธอด (โมฆะ) ภายใน DAO - ฉันกำลังใช้จุดคอมมิตที่ส่งรายการผลลัพธ์จนถึงจุดนั้นรีเซ็ตรายการและดำเนินการต่อ สมมติว่าฉันมี 4 สิ่งในรายการและฉันมีจุดคอมมิตเป็น 1 ฉันคาดว่าเมธอด "ส่ง" จะถูกเรียก 4 ครั้ง ฉันตรวจสอบได้ว่าเมธอดถูกเรียกเพียงครั้งเดียวโดยการเขียน Mockito.verify(mock).send() มันผ่าน .. แต่ฉันต้องการยืนยันจำนวนครั้งที่ถูกเรียก ฉันจะคิดว่า Mockito.verify(mock.send(), times(4)) จะเพียงพอ แต่กล่าวว่าพารามิเตอร์ไม่ถูกต้องสำหรับการตรวจสอบ อนึ่งถ้าฉันเปลี่ยน Mockito.verify(mock).send()ไป Mockito.verify(mock.send())หรือ Mockito.verify((mock).send())ฉันจะได้รับข้อผิดพลาดเดียวกัน ความคิดเกี่ยวกับเรื่องนี้?

5
อะไรคือความแตกต่างระหว่างการล้อเลียนและการสอดแนมเมื่อใช้ Mockito?
อะไรคือกรณีการใช้งานสำหรับการใช้สายลับ Mockito? สำหรับฉันแล้วดูเหมือนว่าทุกกรณีการใช้งานสายลับสามารถจัดการได้ด้วยการเยาะเย้ยโดยใช้ callRealMethod ความแตกต่างอย่างหนึ่งที่ฉันเห็นคือถ้าคุณต้องการให้การโทรส่วนใหญ่เป็นของจริงมันจะบันทึกโค้ดบางบรรทัดเพื่อใช้จำลองกับสายลับ เป็นอย่างนั้นหรือฉันพลาดภาพใหญ่กว่านี้
142 java  testing  mocking  mockito 

9
การล้อเลียนตัวแปรสมาชิกของคลาสโดยใช้ Mockito
ฉันเป็นมือใหม่ในการพัฒนาและการทดสอบหน่วยโดยเฉพาะ ฉันเดาว่าความต้องการของฉันค่อนข้างง่าย แต่ฉันอยากรู้ว่าคนอื่นคิดอย่างไรกับเรื่องนี้ สมมติว่าฉันมีสองคลาสเช่นนั้น - public class First { Second second ; public First(){ second = new Second(); } public String doSecond(){ return second.doSecond(); } } class Second { public String doSecond(){ return "Do Something"; } } สมมติว่าฉันกำลังเขียน unit test เพื่อทดสอบFirst.doSecond()method อย่างไรก็ตามสมมติว่าฉันต้องการ Mock Second.doSecond()class เช่นนั้น ฉันใช้ Mockito เพื่อทำสิ่งนี้ public void …
142 java  mocking  mockito 

5
Mockito: InvalidUseOfMatchersException
ฉันมีเครื่องมือบรรทัดคำสั่งที่ทำการตรวจสอบ DNS หากการตรวจสอบ DNS สำเร็จคำสั่งดำเนินการกับงานเพิ่มเติม ฉันพยายามเขียนการทดสอบหน่วยโดยใช้ Mockito นี่คือรหัสของฉัน: public class Command() { // .... void runCommand() { // .. dnsCheck(hostname, new InetAddressFactory()); // .. // do other stuff after dnsCheck } void dnsCheck(String hostname, InetAddressFactory factory) { // calls to verify hostname } } ฉันใช้ InetAddressFactory เพื่อเยาะเย้ยการใช้งานแบบคงที่ของInetAddressชั้นเรียน นี่คือรหัสสำหรับโรงงาน: public class …

4
ตัวอย่าง argumentCaptor ของ Mockito
ทุกคนช่วยยกตัวอย่างให้ฉันดูวิธีใช้org.mockito.ArgumentCaptorคลาสได้อย่างไรและมันแตกต่างจากแมทช์ง่ายๆที่มาพร้อมกับ mockito ฉันอ่านเอกสาร mockito ที่ให้มา แต่เอกสารเหล่านั้นไม่ได้อธิบายอย่างชัดเจนไม่มีผู้ใดสามารถอธิบายได้อย่างชัดเจน

5
Mockito: วิธีการทิ่มแทงที่ส่งคืนประเภทด้วย Wild-Cards ที่ถูกผูกไว้
พิจารณารหัสนี้: public class DummyClass { public List<? extends Number> dummyMethod() { return new ArrayList<Integer>(); } } public class DummyClassTest { public void testMockitoWithGenerics() { DummyClass dummyClass = Mockito.mock(DummyClass.class); List<? extends Number> someList = new ArrayList<Integer>(); Mockito.when(dummyClass.dummyMethod()).thenReturn(someList); //Compiler complains about this } } คอมไพเลอร์บ่นเกี่ยวกับบรรทัดที่พยายามทำให้พฤติกรรมสำหรับdummyMethod(). คำแนะนำใด ๆ เกี่ยวกับวิธีการที่ใช้วิธีการขีดฆ่าที่ส่งคืนประเภทที่มีไวด์การ์ดที่มีขอบเขต?


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