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

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

6
การใช้ Mockito เพื่อจำลองคลาสด้วยพารามิเตอร์ทั่วไป
มีวิธีทำความสะอาดแบบจำลองคลาสด้วยพารามิเตอร์ทั่วไปหรือไม่? ว่าฉันมีจะเยาะเย้ยชั้นเรียนซึ่งผมต้องผ่านเข้าไปในวิธีการที่คาดว่าจะเป็นFoo<T> Foo<Bar>ฉันสามารถทำสิ่งต่อไปนี้ได้ง่ายพอ: Foo mockFoo = mock(Foo.class); when(mockFoo.getValue).thenReturn(new Bar()); สมมติว่าผลตอบแทนประเภททั่วไปgetValue() แต่ที่จะมีลูกแมวเมื่อผมมารู้ทีหลังผ่านมันเข้าไปในวิธีการที่คาดหวังว่าT Foo<Bar>การคัดเลือกเป็นวิธีการเดียวในการทำเช่นนี้หรือไม่?
280 java  generics  mockito 

5
ทำไม Mockito ไม่จำลองวิธีการแบบคงที่?
ฉันอ่านหัวข้อเกี่ยวกับวิธีการคงที่ที่นี่และฉันคิดว่าฉันเข้าใจปัญหาการใช้วิธีคงที่ / ผิดวิธีมากเกินไปอาจทำให้เกิด แต่ฉันไม่ได้ไปถึงจุดต่ำสุดว่าทำไมมันจึงยากที่จะเลียนแบบวิธีการคงที่ ฉันรู้กรอบการเยาะเย้ยอื่น ๆ เช่น PowerMock สามารถทำได้ แต่ทำไม Mockito ถึงไม่สามารถทำได้? ฉันอ่านบทความนี้แต่ผู้เขียนดูเหมือนจะต่อต้านคำอย่างเคร่งศาสนาstaticบางทีมันอาจเป็นความเข้าใจที่ไม่ดีของฉัน คำอธิบาย / ลิงค์ง่าย ๆ น่าจะดีมาก
267 java  methods  static  mockito 

11
ตรวจสอบค่าแอตทริบิวต์ของวัตถุด้วย mockito
ฉันมีวิธีการโทรซึ่งฉันต้องการที่จะเยาะเย้ยกับ mockito เริ่มต้นด้วยฉันได้สร้างและฉีดอินสแตนซ์ของวัตถุที่เรียกว่าวิธีการ จุดประสงค์ของฉันคือการตรวจสอบหนึ่งในวัตถุในวิธีการโทร มีวิธีที่ mockito ช่วยให้คุณสามารถยืนยันหรือตรวจสอบวัตถุและมันเป็นคุณลักษณะเมื่อมีการเรียกวิธีการจำลอง? ตัวอย่าง Mockito.verify(mockedObject) .someMethodOnMockedObject( Mockito.<SomeObjectAsArgument>anyObject()) แทนที่จะทำanyObject()ฉันต้องการตรวจสอบว่าวัตถุอาร์กิวเมนต์มีบางฟิลด์ Mockito.verify(mockedObject) .someMethodOnMockedObject( Mockito.<SomeObjectAsArgument>**compareWithThisObject()**)
264 java  mocking  mockito 

8
Mockito matcher และอาร์เรย์ของดั้งเดิม
ด้วย Mockito ฉันต้องการverify()เรียกวิธีด้วยbyte[]ในรายการอาร์กิวเมนต์ แต่ไม่พบวิธีเขียนสิ่งนี้ myMethod( byte[] ) ฉันแค่ต้องการบางสิ่งเช่นanyByteArray()นี้จะทำอย่างไรกับ Mockito
226 java  mockito 

9
Mockito ตรวจสอบข้อโต้แย้งวิธี
ฉัน googled เกี่ยวกับเรื่องนี้ แต่ไม่พบสิ่งที่เกี่ยวข้อง ฉันมีสิ่งนี้: Object obj = getObject(); Mockeable mock= Mockito.mock(Mockeable.class); Mockito.when(mock.mymethod(obj )).thenReturn(null); Testeable testableObj = new Testeable(); testableObj.setMockeable(mock); command.runtestmethod(); ตอนนี้ฉันต้องการตรวจสอบว่าmymethod(Object o)สิ่งที่เรียกว่าภายในruntestmethod()ถูกเรียกด้วยวัตถุoไม่ใช่อย่างอื่น แต่ฉันมักจะผ่านการทดสอบสิ่งที่ฉันใส่ในการตรวจสอบตัวอย่างเช่นด้วย: Mockito.verify(mock.mymethod(Mockito.eq(obj))); หรือ Mockito.verify(mock.mymethod(Mockito.eq(null))); หรือ Mockito.verify(mock.mymethod(Mockito.eq("something_else"))); ฉันผ่านการทดสอบเสมอ ฉันจะทำการยืนยันให้สำเร็จได้อย่างไร (ถ้าเป็นไปได้) ขอบคุณ.

24
วิธีการเลียนแบบชั้นเรียนสุดท้ายด้วย mockito
ฉันมีชั้นเรียนสุดท้ายสิ่งนี้: public final class RainOnTrees{ public void startRain(){ // some code here } } ฉันใช้คลาสนี้ในคลาสอื่นเช่นนี้: public class Seasons{ RainOnTrees rain = new RainOnTrees(); public void findSeasonAndRain(){ rain.startRain(); } } และในชั้นทดสอบ JUnit ของฉันสำหรับSeasons.javaฉันต้องการเยาะเย้ยRainOnTreesชั้นเรียน ฉันจะทำสิ่งนี้กับ Mockito ได้อย่างไร
218 java  junit  mockito 

11
ใช้ Mockito เพื่อทดสอบคลาสนามธรรม
ฉันต้องการทดสอบคลาสนามธรรม แน่นอนว่าฉันสามารถเขียนจำลองที่สืบทอดมาจากคลาสได้ด้วยตนเอง ฉันสามารถทำสิ่งนี้โดยใช้กรอบการเยาะเย้ย (ฉันใช้ Mockito) แทนการประดิษฐ์จำลองด้วยมือของฉันได้หรือไม่? อย่างไร?

4
Mockito ยืนยันการสั่งซื้อ / ลำดับของการเรียกเมธอด
มีวิธีการตรวจสอบว่ามีการmethodOneเรียกมาก่อนmethodTwoใน Mockito หรือไม่? public class ServiceClassA { public void methodOne(){} } public class ServiceClassB { public void methodTwo(){} } public class TestClass { public void method(){ ServiceClassA serviceA = new ServiceClassA(); ServiceClassB serviceB = new ServiceClassB(); serviceA.methodOne(); serviceB.methodTwo(); } }

5
จะบอกวัตถุจำลอง Mockito ให้คืนสิ่งที่แตกต่างในครั้งต่อไปที่เรียกได้อย่างไร
ดังนั้นฉันกำลังสร้างวัตถุจำลองเป็นตัวแปรแบบคงที่ในระดับชั้นเช่นนี้ ... ในการทดสอบหนึ่งฉันต้องการFoo.someMethod()คืนค่าบางค่าในขณะที่การทดสอบอื่นฉันต้องการให้คืนค่าที่แตกต่างกัน ปัญหาที่ฉันมีคือดูเหมือนว่าฉันต้องสร้าง mocks ขึ้นใหม่เพื่อให้ทำงานได้อย่างถูกต้อง ฉันต้องการหลีกเลี่ยงการสร้าง mocks ขึ้นใหม่และใช้วัตถุเดียวกันในการทดสอบแต่ละครั้ง class TestClass { private static Foo mockFoo; @BeforeClass public static void setUp() { mockFoo = mock(Foo.class); } @Test public void test1() { when(mockFoo.someMethod()).thenReturn(0); TestObject testObj = new TestObject(mockFoo); testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value } @Test public void …

6
เมื่อใดที่จะใช้ Mockito.verify ()
ฉันเขียนกรณีทดสอบ jUnit สำหรับ 3 จุดประสงค์: เพื่อให้แน่ใจว่ารหัสของฉันเป็นไปตามฟังก์ชันการทำงานที่จำเป็นทั้งหมดภายใต้การรวมกัน / ค่า (หรือส่วนใหญ่) ของอินพุต เพื่อให้แน่ใจว่าฉันสามารถเปลี่ยนแปลงการใช้งานและพึ่งพากรณีทดสอบ JUnit เพื่อบอกฉันว่าการทำงานทั้งหมดของฉันยังคงเป็นที่น่าพอใจ เป็นเอกสารประกอบการใช้งานทุกกรณีรหัสของฉันจัดการและทำหน้าที่เป็นข้อมูลจำเพาะสำหรับการปรับโครงสร้างใหม่ - หากรหัสจำเป็นต้องถูกเขียนใหม่ (ปรับเปลี่ยนรหัสและหากการทดสอบ jUnit ของฉันล้มเหลว - คุณอาจพลาดกรณีการใช้งานบางอย่าง) ฉันไม่เข้าใจว่าทำไมหรือMockito.verify()ควรใช้ เมื่อฉันเห็นverify()การถูกเรียกมันกำลังบอกฉันว่า jUnit ของฉันเริ่มตระหนักถึงการใช้งาน (ดังนั้นการเปลี่ยนการใช้งานของฉันจะทำลาย jUnits ของฉันแม้ว่าการทำงานของฉันจะไม่ได้รับผลกระทบ) ฉันกำลังหา: สิ่งที่ควรเป็นแนวทางสำหรับการใช้งานที่เหมาะสมของMockito.verify()? เป็นพื้นฐานที่ถูกต้องหรือไม่ที่ jUnits จะต้องตระหนักถึงหรือใช้ควบคู่กับการทดสอบในชั้นเรียนอย่างรัดกุมหรือไม่?

5
Mockito - ความแตกต่างระหว่าง doReturn () และเมื่อ ()
ขณะนี้ฉันกำลังใช้ Mockito เพื่อจำลองวัตถุชั้นบริการของฉันในแอปพลิเคชัน Spring MVC ซึ่งฉันต้องการทดสอบวิธีการควบคุมของฉัน อย่างไรก็ตามในขณะที่ฉันได้รับการอ่านบนเฉพาะของ Mockito ที่ฉันได้พบว่าวิธีการที่จะเทียบเท่ากับdoReturn(...).when(...) when(...).thenReturn(...)ดังนั้นคำถามของฉันคืออะไรที่มีสองวิธีที่ทำสิ่งเดียวกันหรืออะไรคือความแตกต่างที่ลึกซึ้งระหว่างdoReturn(...).when(...)และwhen(...).thenReturn(...)? ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

4
การใช้วิธีการทั่วไป "any ()" ของ Mockito
ฉันมีอินเตอร์เฟซที่มีวิธีการที่คาดว่าอาร์เรย์ของFoo: public interface IBar { void doStuff(Foo[] arr); } ฉันกำลังเยาะเย้ยอินเทอร์เฟซนี้โดยใช้ Mockito และฉันต้องการยืนยันที่doStuff()เรียกว่า แต่ฉันไม่ต้องการที่จะตรวจสอบข้อโต้แย้งที่ผ่าน - "ไม่สนใจ" ฉันจะเขียนรหัสต่อไปนี้โดยใช้any()วิธีการทั่วไปได้anyObject()อย่างไร IBar bar = mock(IBar.class); ... verify(bar).doStuff((Foo[]) anyObject());

5
Mockito: ฉีดของจริงลงในช่อง @Autowired ส่วนตัว
ฉันใช้ Mockito @Mockและ@InjectMocksคำอธิบายประกอบในการฉีดการพึ่งพาในเขตข้อมูลส่วนตัวที่มีบันทึกย่อของสปริง@Autowired: @RunWith(MockitoJUnitRunner.class) public class DemoTest { @Mock private SomeService service; @InjectMocks private Demo demo; /* ... */ } และ public class Demo { @Autowired private SomeService service; /* ... */ } ตอนนี้ฉันต้องการฉีดของจริงลงใน@Autowiredฟิลด์ส่วนตัว(โดยไม่มีตัวตั้งค่า) เป็นไปได้หรือเป็นกลไกที่ จำกัด เฉพาะการฉีด Mocks เท่านั้น?
191 java  spring  mockito 

5
โยนการตรวจสอบข้อยกเว้นจาก mocks กับ Mockito
ฉันกำลังพยายามให้วัตถุที่เยาะเย้ยคนหนึ่งของฉันโยนข้อยกเว้นที่เลือกไว้เมื่อเรียกวิธีการเฉพาะ ฉันกำลังพยายามดังต่อไปนี้ @Test(expectedExceptions = SomeException.class) public void throwCheckedException() { List<String> list = mock(List.class); when(list.get(0)).thenThrow(new SomeException()); String test = list.get(0); } public class SomeException extends Exception { } อย่างไรก็ตามนั่นทำให้เกิดข้อผิดพลาดดังต่อไปนี้ org.testng.TestException: Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException: Checked exception is invalid for this method! Invalid: com.testing.MockitoCheckedExceptions$SomeException ดูที่เอกสาร Mockito ที่พวกเขาใช้เท่านั้นRuntimeExceptionเป็นไปไม่ได้ที่จะโยนการตรวจสอบยกเว้นจากวัตถุจำลองด้วย Mockito?
173 java  mocking  mockito 

7
Mockito.any () ผ่านส่วนต่อประสานกับ Generics
เป็นไปได้ที่จะผ่านประเภทของอินเตอร์เฟซที่มี generics หรือไม่? อินเทอร์เฟซ: public interface AsyncCallback<T> ในวิธีทดสอบของฉัน: Mockito.any(AsyncCallback.class) วาง<ResponseX>ไว้ด้านหลังหรือ.classไม่ทำงาน
171 java  generics  mockito 

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