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

กรอบการทดสอบหน่วยยอดนิยมสำหรับ Java และ Scala เวอร์ชันล่าสุดคือ JUnit 5 รองรับการทดสอบตามคำอธิบายประกอบแบบย่อและพารามิเตอร์ พิจารณาใช้ร่วมกับแท็ก Java หรือ Scala เพื่อระบุกรณีการใช้งานของคุณ

6
เปรียบเทียบ Array ใน JUnit assertions ในตัวแบบรัดกุม?
มีวิธีรัดกุมในตัวที่จะทำเท่ากับการยืนยันในสองอาร์เรย์เหมือนพิมพ์ใน JUnit? โดยค่าเริ่มต้น (อย่างน้อยใน JUnit 4) ดูเหมือนว่าจะทำการเปรียบเทียบกับวัตถุอาร์เรย์เอง EG ไม่ทำงาน: int[] expectedResult = new int[] { 116800, 116800 }; int[] result = new GraphixMask().sortedAreas(rectangles); assertEquals(expectedResult, result); แน่นอนฉันสามารถทำได้ด้วยตนเองด้วย: assertEquals(expectedResult.length, result.length); for (int i = 0; i < expectedResult.length; i++) assertEquals("mismatch at " + i, expectedResult[i], result[i]); .. แต่มีวิธีที่ดีกว่า
159 java  arrays  junit  assertions 

4
ความแตกต่างระหว่าง setUp () และ setUpBeforeClass ()
เมื่อหน่วยทดสอบกับ JUnit มีสองวิธีการที่คล้ายกันและsetUp() setUpBeforeClass()ความแตกต่างระหว่างวิธีการเหล่านี้คืออะไร? นอกจากนี้ความแตกต่างระหว่างtearDown()และคืออะไรtearDownAfterClass()คืออะไร? นี่คือลายเซ็น: @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { }
159 java  junit 

7
เหตุใดฉันจึงควรใช้ Hamcrest-Matcher และ assertThat () แทน assertXXX แบบดั้งเดิม () - วิธีการ
เมื่อฉันดูตัวอย่างในคลาส Assert JavaDoc assertThat("Help! Integers don't work", 0, is(1)); // fails: // failure message: // Help! Integers don't work // expected: is <1> // got value: <0> assertThat("Zero is one", 0, is(not(1))) // passes assertEquals( 0, 1 )ฉันไม่ได้เห็นข้อได้เปรียบใหญ่กว่าสมมติว่า มันอาจจะดีสำหรับข้อความถ้าโครงสร้างมีความซับซ้อนมากขึ้น แต่คุณเห็นข้อดีมากกว่านี้ไหม? การอ่าน?
153 java  testing  junit  junit4  hamcrest 

5
ความสับสนของ JUnit: ใช้ 'ขยาย TestCase' หรือ '@Test' หรือไม่
ฉันพบการใช้งานที่เหมาะสม (หรืออย่างน้อยเอกสาร) ของ JUnit ทำให้เกิดความสับสนมาก คำถามนี้ทำหน้าที่เป็นข้อมูลอ้างอิงในอนาคตและเป็นคำถามจริง หากฉันเข้าใจถูกต้องมีสองวิธีหลักในการสร้างและเรียกใช้การทดสอบ JUnit: วิธี A (JUnit 3 สไตล์):สร้างคลาสที่ขยาย TestCase testและเริ่มวิธีการทดสอบที่มีคำว่า เมื่อรันคลาสเป็น JUnit Test (ใน Eclipse) วิธีการทั้งหมดที่เริ่มต้นด้วยคำtestจะถูกเรียกใช้โดยอัตโนมัติ import junit.framework.TestCase; public class DummyTestA extends TestCase { public void testSum() { int a = 5; int b = 10; int result = a + b; assertEquals(15, result); } …

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

5
การตรวจสอบว่ารายการไม่ว่างใน Hamcrest
ฉันสงสัยว่าใครรู้วิธีการตรวจสอบว่ารายการว่างเปล่าใช้assertThat()และMatchers? วิธีที่ดีที่สุดที่ฉันเห็นเพียงใช้ JUnit: assertFalse(list.isEmpty()); แต่ฉันหวังว่าจะมีวิธีการทำเช่นนี้ใน Hamcrest

14
วิธีทดสอบโค้ดขึ้นอยู่กับตัวแปรสภาพแวดล้อมโดยใช้ JUnit
ฉันมีโค้ด Java ชิ้นหนึ่งซึ่งใช้ตัวแปรสภาพแวดล้อมและพฤติกรรมของโค้ดขึ้นอยู่กับค่าของตัวแปรนี้ ฉันต้องการทดสอบรหัสนี้ด้วยค่าตัวแปรสภาพแวดล้อมที่แตกต่างกัน ฉันจะทำสิ่งนี้ใน JUnit ได้อย่างไร? ฉันเคยเห็นวิธีตั้งค่าตัวแปรสภาพแวดล้อมใน Javaโดยทั่วไปแล้ว แต่ฉันสนใจด้านการทดสอบหน่วยมากกว่าโดยเฉพาะอย่างยิ่งเมื่อพิจารณาว่าการทดสอบไม่ควรรบกวนซึ่งกันและกัน

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())ฉันจะได้รับข้อผิดพลาดเดียวกัน ความคิดเกี่ยวกับเรื่องนี้?

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

6
Python unittests ใน Jenkins?
คุณจะให้เจนกินส์ดำเนินการกับ python unittest case ได้อย่างไร? เป็นไปได้ไหมที่จะส่งออก XML สไตล์ JUnit จากunittestแพ็คเกจในตัว


30
ข้อผิดพลาด: (23, 17) ล้มเหลวในการแก้ไข: junit: junit: 4.12
เหตุใดทุกครั้งที่ฉันสร้างโปรเจ็กต์ใหม่ใน Android Studio จึงมักจะเกิดสิ่งต่อไปนี้ ข้อผิดพลาด: (23, 17) ล้มเหลวในการแก้ไข: junit: junit: 4.12? เมื่อฉันลบการtestCompile 'junit:junit:4.12'อ้างอิงมันก็ไม่ใช่ปัญหาอีกต่อไป build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "com.okedroid.myapplication" minSdkVersion 17 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { …

6
Junit @ Before / @ After เรียกลำดับอะไร
ฉันมีชุดทดสอบการผสานรวม ฉันมีIntegrationTestBaseชั้นเรียนสำหรับการทดสอบทั้งหมดของฉันที่จะขยาย คลาสฐานนี้มีเมธอด@Before( public void setUp()) และ@After( public void tearDown()) เพื่อสร้างการเชื่อมต่อ API และ DB สิ่งที่ฉันได้ทำเป็นเพียงการเอาชนะทั้งสองวิธีการในแต่ละ testcase และเรียกและsuper.setUp() super.tearDown()อย่างไรก็ตามสิ่งนี้อาจทำให้เกิดปัญหาได้หากมีคนลืมโทรหาซุปเปอร์หรือวางไว้ผิดที่และมีข้อยกเว้นเกิดขึ้นและพวกเขาลืมโทรหาซุปเปอร์ในที่สุดหรือบางอย่าง สิ่งที่ฉันต้องการทำคือสร้างsetUpและtearDownวิธีการในคลาสพื้นฐานfinalจากนั้นเพิ่มคำอธิบายประกอบ@Beforeและ@Afterวิธีการของเราเอง ทำการทดสอบเบื้องต้นดูเหมือนว่าจะเรียกตามลำดับนี้เสมอ: Base @Before Test @Before Test Test @After Base @After แต่ฉันกังวลเล็กน้อยว่าจะไม่มีการรับประกันคำสั่งซื้อและอาจทำให้เกิดปัญหาได้ ฉันมองไปรอบ ๆ และไม่เห็นอะไรเกี่ยวกับเรื่องนี้ ไม่มีใครรู้ว่าฉันสามารถทำได้และไม่มีปัญหาใด ๆ ? รหัส: public class IntegrationTestBase { @Before public final void setUp() { *always called 1st?* …

11
ทำไมต้องใช้ JUnit ในการทดสอบ
บางทีคำถามของฉันอาจจะเป็นมือใหม่ แต่ฉันก็ไม่เข้าใจสถานการณ์ที่จะใช้ จูนิทเหรอ? ไม่ว่าฉันจะเขียนแอปพลิเคชั่นธรรมดา ๆ หรือใช้งานขนาดใหญ่ฉันจะทดสอบด้วยSystem.outข้อความและมันก็ค่อนข้างง่ายสำหรับฉัน ทำไมต้องสร้างคลาสทดสอบด้วย JUnit ซึ่งเป็นโฟลเดอร์ที่ไม่จำเป็นในโปรเจ็กต์หากเรายังต้องเรียกใช้เมธอดเดิมตรวจสอบสิ่งที่ส่งคืนแล้วเรามีค่าใช้จ่ายในการใส่คำอธิบายประกอบทุกอย่าง ทำไมไม่เขียนคลาสและทดสอบพร้อมกันSystem.outแต่ไม่สร้างคลาสแบบทดสอบ ปล. ฉันไม่เคยทำงานในโครงการขนาดใหญ่ที่ฉันเพิ่งเรียนรู้ แล้วจุดประสงค์คืออะไร?
131 java  unit-testing  junit  tdd 


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