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

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

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

7
assertEquals ของ Java นั้นเชื่อถือได้หรือไม่?
ฉันรู้ว่ามีปัญหาบางอย่างเมื่อเปรียบเทียบสอง== Stringsดูเหมือนว่าString.equals()เป็นวิธีที่ดีกว่า ดีที่ฉันทำทดสอบ JUnit assertEquals(str1, str2)และความชอบของฉันคือการใช้งาน นี่เป็นวิธีที่เชื่อถือได้ในการยืนยันสองสตริงที่มีเนื้อหาเดียวกันหรือไม่? ฉันจะใช้assertTrue(str1.equals(str2))แต่แล้วคุณไม่ได้รับประโยชน์จากการเห็นสิ่งที่คาดหวังและค่าที่แท้จริงคือความล้มเหลว ในบันทึกที่เกี่ยวข้องไม่มีใครมีลิงค์ไปยังหน้าหรือเธรดที่อธิบายปัญหาด้วยstr1 == str2?
199 java  string  junit  junit4 

16
Java: วิธีทดสอบวิธีที่เรียกว่า System.exit ()
ฉันมีวิธีการสองสามอย่างที่ควรเรียกใช้System.exit()ในอินพุตบางตัว น่าเสียดายที่การทดสอบกรณีเหล่านี้ทำให้ JUnit สิ้นสุดลง! การวางการเรียกเมธอดในเธรดใหม่ดูเหมือนจะไม่ช่วยได้เนื่องจากSystem.exit()ยกเลิก JVM ไม่ใช่เฉพาะเธรดปัจจุบัน มีรูปแบบทั่วไปในการจัดการกับเรื่องนี้หรือไม่? ตัวอย่างเช่นผมสามารถ Subsitute ต้นขั้วหาSystem.exit()? [แก้ไข] ชั้นเรียนที่สงสัยเป็นเครื่องมือบรรทัดคำสั่งที่ฉันพยายามทดสอบภายใน JUnit บางที JUnit ไม่ใช่เครื่องมือที่เหมาะสมสำหรับงานใช่ไหม ข้อเสนอแนะสำหรับเครื่องมือทดสอบการถดถอยเสริมนั้นยินดีต้อนรับ (โดยเฉพาะสิ่งที่รวมเข้ากับ JUnit และ EclEmma ได้ดี)

4
ยืนยันวัตถุเป็นประเภทที่เฉพาะเจาะจง
เป็นไปได้ใน JUnit เพื่อยืนยันวัตถุเป็นตัวอย่างของชั้น? ด้วยเหตุผลหลายประการฉันมีวัตถุในการทดสอบของฉันที่ฉันต้องการตรวจสอบประเภทของ มันเป็นประเภทของ Object1 หรือชนิดของ Object2 หรือไม่? ปัจจุบันฉันมี: assertTrue(myObject instanceof Object1); assertTrue(myObject instanceof Object2); ใช้งานได้ แต่ฉันสงสัยว่ามีวิธีที่แสดงออกมากขึ้นในการทำเช่นนี้ ตัวอย่างเช่น: assertObjectIsClass(myObject, Object1); ฉันสามารถทำสิ่งนี้: assertEquals(myObject.class, Object1.getClass()); มีวิธีการยืนยันที่เฉพาะเจาะจงที่อนุญาตให้ฉันทดสอบวัตถุชนิดใดแบบหนึ่งที่ดูสง่างามกว่า
195 java  unit-testing  junit 

4
Junit @Rule ทำงานอย่างไร
ฉันต้องการเขียนกรณีทดสอบสำหรับรหัสจำนวนมากฉันต้องการทราบรายละเอียดของ@Ruleคุณสมบัติการเพิ่มความคิดเห็นของ JUnit เพื่อที่ฉันจะสามารถใช้สำหรับการเขียนกรณีทดสอบได้ โปรดให้คำตอบหรือลิงก์ที่ดีซึ่งให้คำอธิบายโดยละเอียดเกี่ยวกับฟังก์ชันการทำงานผ่านตัวอย่างง่ายๆ
195 java  junit  junit4  junit-rule 

7
ความหมายของอาร์กิวเมนต์ epsilon ของ assertEquals สำหรับค่า double
ฉันมีคำถามเกี่ยวกับ Junit assertEqualsเพื่อทดสอบค่าสองเท่า อ่านเอกสาร API ที่ฉันเห็น: @Deprecated public static void assertEquals(double expected, double actual) เลิก ใช้ assertEquals (คาดว่าจะเป็นสองเท่า, จริงสองเท่า, epsilon สองเท่า) แทน สิ่งที่ไม่epsilonคุ้มค่าหมายถึงอะไร? (เอปไซลอนเป็นตัวอักษรในอักษรกรีกใช่มั้ย) มีคนอธิบายให้ฉันรู้ถึงวิธีการใช้
187 java  unit-testing  junit 


12
ไม่สามารถหา @SpringBootConfiguration เมื่อทำ JpaTest
ฉันใหม่กับเฟรมเวิร์ก (เพิ่งผ่านชั้นเรียน) และนี่เป็นครั้งแรกของฉันที่ใช้ Spring Boot ฉันพยายามทำการทดสอบ Junit แบบง่าย ๆ เพื่อดูว่า CrudRepositories ของฉันใช้งานได้จริงหรือไม่ ข้อผิดพลาดที่ฉันได้รับคือ: ไม่สามารถหา @SpringBootConfiguration ได้คุณต้องใช้ @ContextConfiguration หรือ @SpringBootTest (คลาส = ... ) ด้วยการทดสอบ java.lang.IllegalStateException ของคุณ Spring Boot ไม่ได้กำหนดค่าตัวเองใช่ไหม ชั้นทดสอบของฉัน: @RunWith(SpringRunner.class) @DataJpaTest @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class JpaTest { @Autowired private AccountRepository repository; @After public void clearDb(){ repository.deleteAll(); } @Test …

30
ไม่พบคลาส: ชุดทดสอบว่างใน IntelliJ
ฉันเพิ่งเริ่มโปรแกรมวิทยาการคอมพิวเตอร์ที่วิทยาลัยของฉันและฉันมีปัญหาบางอย่างกับ IntelliJ เมื่อฉันพยายามเรียกใช้การทดสอบหน่วยฉันได้รับข้อความ Process finished with exit code 1 Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite. ฉันเห็นข้อความชื่อ "ไม่พบการทดสอบ" ที่ด้านซ้ายของหน้าจอ รหัสทดสอบของฉันอยู่ที่นี่: package edu.macalester.comp124.hw0; import org.junit.Test; import static org.junit.Assert.*; public class AreaTest { @Test public void testSquare() { assertEquals(Area.getSquareArea(3.0), 9.0, 0.001); } @Test public void testCircle() { assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001); } } และรหัสโครงการของฉันอยู่ที่นี่: …

8
ข้อกำหนดคุณลักษณะรูปแบบ JUnit XML ที่ฮัดสันสนับสนุนคืออะไร
ฉันมีฮัดสันเป็นเซิร์ฟเวอร์รวมอย่างต่อเนื่องและฉันต้องการใช้ตัวเลือก 'เผยแพร่รายงานผลการทดสอบ JUnit' แต่ฉันไม่ได้ใช้เครื่องมือ xUnit สำหรับการทดสอบแทนที่จะเป็นฉันมีเชลล์สคริปต์ที่รันการทดสอบและส่งคืนผลลัพธ์ในรูปแบบที่เรียบง่าย ฉันกำลังคิดที่จะสร้างสคริปต์ที่แปลงผลลัพธ์เหล่านี้เป็นรูปแบบ JUnit ดังนั้นฉันจึงน่าสนใจว่าไฟล์ JUnit ต้องมีลักษณะอย่างไร
183 jenkins  junit  hudson  xunit 

4
การกำหนดค่า IntelliJ IDEA สำหรับการทดสอบหน่วยด้วย JUnit
ฉันตัดสินใจลองใช้ IntelliJ เมื่อเช้านี้ผ่านทางรุ่นทดลองและติดตั้งปลั๊กอิน JUnit ฉันสร้างโครงการ Java ใหม่และฉันต้องการเขียนกรณีทดสอบ ฉันจะเพิ่มไฟล์ junit.jar ไปยังโครงการของฉันได้อย่างไร (ฉันอยากจะเพิ่มเข้าไปในทุก ๆ โปรเจ็กต์ของจาวาในตอนนี้และตลอดไปมากกว่านี้ - มีวิธีการทำเช่นนั้นหรือไม่?)


12
ยืนยันเท่ากับระหว่าง 2 รายการใน Junit
ฉันจะยืนยันความเท่าเทียมกันระหว่างรายการในกรณีทดสอบJUnit ได้อย่างไร ความเท่าเทียมกันควรอยู่ระหว่างเนื้อหาของรายการ ตัวอย่างเช่น: List<String> numbers = Arrays.asList("one", "two", "three"); List<String> numbers2 = Arrays.asList("one", "two", "three"); List<String> numbers3 = Arrays.asList("one", "two", "four"); // numbers should be equal to numbers2 //numbers should not be equal to numbers3

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

3
คำเตือน: เมธอด assertEquals จากประเภท Assert เลิกใช้แล้ว
เนื่องจากวิธีการAssert.assertEqualsเลิกใช้เราควรใช้วิธีใดในตอนนี้ รหัสต่อไปนี้: String arg1 = "test"; String arg2 = "me"; Assert.assertEquals(arg1, arg2); ให้คำเตือนต่อไปนี้: เครื่องหมายหลายอันในบรรทัดนี้ เมธอด assertEquals (String, String) จากประเภท Assert นั้นเลิกใช้แล้ว ประเภท Assert เลิกใช้แล้ว
160 java  junit 

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