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

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

7
Hamcrest เปรียบเทียบคอลเล็กชัน
ฉันกำลังพยายามเปรียบเทียบ 2 รายการ: assertThat(actual.getList(), is(Matchers.containsInAnyOrder(expectedList))); แต่ความคิด java: no suitable method found for assertThat(java.util.List<Agent>,org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>>) method org.junit.Assert.<T>assertThat(T,org.hamcrest.Matcher<T>) is not applicable (no instance(s) of type variable(s) T exist so that argument type org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>> conforms to formal parameter type org.hamcrest.Matcher<T>) method org.junit.Assert.<T>assertThat(java.lang.String,T,org.hamcrest.Matcher<T>) is not applicable (cannot instantiate from arguments because …
114 java  junit  hamcrest 

13
Surefire ไม่ได้รับการทดสอบ Junit 5
ฉันเขียนวิธีการทดสอบง่ายๆด้วย JUnit 5: public class SimlpeTest { @Test @DisplayName("Some description") void methodName() { // Testing logic for subject under test } } แต่เมื่อฉันวิ่งmvn testฉันได้รับ: ------------------------------------------------------- T E S T S ------------------------------------------------------- Running SimlpeTest Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec Results : Tests run: …

8
คำสั่ง RunWith หลายรายการใน jUnit
ฉันเขียนการทดสอบหน่วยและต้องการใช้JUnitParamsRunnerและMockitoJUnitRunnerสำหรับชั้นเรียนการทดสอบเดียว ขออภัยสิ่งต่อไปนี้ใช้ไม่ได้: @RunWith(MockitoJUnitRunner.class) @RunWith(JUnitParamsRunner.class) public class DatabaseModelTest { // some tests } มีวิธีใช้ทั้ง Mockito และ JUnitParams ในคลาสทดสอบเดียวหรือไม่?
113 java  unit-testing  junit 

9
วิธีทดสอบ servlet ของฉันโดยใช้ JUnit
ฉันได้สร้างระบบเว็บโดยใช้ Java Servlets และตอนนี้ต้องการทำการทดสอบ JUnit ของฉันdataManagerเป็นเพียงส่วนพื้นฐานของรหัสที่ส่งไปยังฐานข้อมูล คุณจะทดสอบ Servlet กับ JUnit ได้อย่างไร ตัวอย่างรหัสของฉันที่อนุญาตให้ผู้ใช้ลงทะเบียน / สมัครซึ่งส่งมาจากหน้าหลักของฉันผ่าน AJAX: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ // Get parameters String userName = request.getParameter("username"); String password = request.getParameter("password"); String name = request.getParameter("name"); try { // Load the database driver Class.forName("com.mysql.jdbc.Driver"); //pass reg details …

10
MongoDB ในตัวเมื่อรันการทดสอบการรวม
คำถามของฉันคือการเปลี่ยนแปลงของคนนี้ เนื่องจากโครงการ Java Web-app ของฉันต้องการตัวกรอง / แบบสอบถามและอินเทอร์เฟซสำหรับการอ่านจำนวนมากกับเครื่องมือเช่น GridFS ฉันจึงพยายามคิดหาวิธีที่เหมาะสมในการใช้ MongoDB ตามวิธีที่โซลูชันข้างต้นแนะนำ ดังนั้นฉันกำลังพิจารณาใช้อินสแตนซ์แบบฝังของ MongoDB ควบคู่ไปกับการทดสอบการรวมระบบของฉัน ฉันต้องการให้เริ่มต้นโดยอัตโนมัติ (ไม่ว่าจะสำหรับการทดสอบแต่ละครั้งหรือทั้งชุด) ล้างฐานข้อมูลสำหรับการทดสอบทุกครั้งและปิดเครื่องในตอนท้าย การทดสอบเหล่านี้อาจทำงานบนเครื่องพัฒนาเช่นเดียวกับเซิร์ฟเวอร์ CI ดังนั้นโซลูชันของฉันจะต้องพกพาได้ด้วย ใครที่มีความรู้เพิ่มเติมเกี่ยวกับ MongoDB ช่วยให้ฉันทราบถึงความเป็นไปได้ของแนวทางนี้และ / หรืออาจแนะนำเนื้อหาการอ่านที่อาจช่วยให้ฉันเริ่มต้นได้ ฉันยังเปิดรับข้อเสนอแนะอื่น ๆ ที่ผู้คนอาจมีเกี่ยวกับวิธีแก้ไขปัญหานี้ ...

23
ฉันจะยืนยันความเท่าเทียมกันในสองคลาสโดยไม่ใช้วิธีการเท่ากับได้อย่างไร
สมมติว่าฉันมีคลาสที่ไม่มีเมธอดเท่ากับ () ซึ่งไม่มีแหล่งที่มา ฉันต้องการยืนยันความเท่าเทียมกันในสองอินสแตนซ์ของคลาสนั้น ฉันสามารถยืนยันได้หลายข้อ: assertEquals(obj1.getFieldA(), obj2.getFieldA()); assertEquals(obj1.getFieldB(), obj2.getFieldB()); assertEquals(obj1.getFieldC(), obj2.getFieldC()); ... ฉันไม่ชอบวิธีแก้ปัญหานี้เพราะฉันไม่ได้รับภาพความเท่าเทียมกันทั้งหมดหากการยืนยันในช่วงต้นล้มเหลว ฉันสามารถเปรียบเทียบด้วยตนเองและติดตามผล: String errorStr = ""; if(!obj1.getFieldA().equals(obj2.getFieldA())) { errorStr += "expected: " + obj1.getFieldA() + ", actual: " + obj2.getFieldA() + "\n"; } if(!obj1.getFieldB().equals(obj2.getFieldB())) { errorStr += "expected: " + obj1.getFieldB() + ", actual: " + obj2.getFieldB() + …
112 java  unit-testing  junit 

10
เรียกใช้การทดสอบ Junit ควบคู่กันใน Maven build หรือไม่
ฉันใช้ JUnit 4.4 และ Maven และฉันมีการทดสอบการรวมที่ใช้งานได้ยาวนานจำนวนมาก เมื่อพูดถึงชุดทดสอบแบบขนานมีวิธีแก้ปัญหาบางอย่างที่ช่วยให้ฉันเรียกใช้วิธีการทดสอบแต่ละวิธีในคลาสทดสอบเดียวควบคู่กันได้ แต่สิ่งเหล่านี้ต้องการให้ฉันเปลี่ยนการทดสอบไม่ทางใดก็ทางหนึ่ง ฉันคิดว่ามันน่าจะเป็นวิธีแก้ปัญหาที่สะอาดกว่ามากในการรัน X คลาสทดสอบที่แตกต่างกันในเธรด X แบบขนาน ฉันมีแบบทดสอบหลายร้อยแบบดังนั้นฉันจึงไม่สนใจเกี่ยวกับเธรดการทดสอบแต่ละคลาส มีวิธีใดบ้างที่จะทำเช่นนี้?
110 java  maven  junit 

17
java.lang.NoClassDefFoundError: org / hamcrest / SelfDescribing
ขณะjunitทำการทดสอบในeclipseฉันได้รับสิ่งนี้Exception: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing ฉันได้เพิ่มjunit.jarไฟล์ไลบรารีแล้ว ฉันได้พยายามรุ่นต่าง ๆ ของ junit.jar: 4.4, 4.8ฯลฯ ฉันจะแก้ไขข้อยกเว้นนี้ได้อย่างไร

8
ทำไม fixtureSetup ของ jUnit ต้องเป็นแบบคงที่?
ฉันทำเครื่องหมายวิธีการด้วยคำอธิบายประกอบ @BeforeClass ของ jUnit และได้รับข้อยกเว้นนี้ว่าต้องเป็นแบบคงที่ อะไรคือเหตุผล? สิ่งนี้บังคับให้การเริ่มต้นทั้งหมดของฉันอยู่ในฟิลด์แบบคงที่โดยไม่มีเหตุผลที่ดีเท่าที่ฉันเห็น ใน. Net (NUnit) ไม่เป็นเช่นนั้น แก้ไข - ข้อเท็จจริงที่ว่าเมธอดที่ใส่คำอธิบายประกอบด้วย @BeforeClass ทำงานเพียงครั้งเดียวไม่ได้เกี่ยวข้องกับวิธีการแบบคงที่ - สามารถมีวิธีการที่ไม่คงที่รันเพียงครั้งเดียว (เช่นเดียวกับใน NUnit)
109 java  junit 

9
รับบริบทของโครงการทดสอบในกรณีทดสอบ Android Junit
มีใครรู้บ้างว่าคุณสามารถรับบริบทของโครงการทดสอบได้อย่างไรในกรณีทดสอบ Android junit (ขยาย AndroidTestCase) หมายเหตุ: การทดสอบไม่ใช่การทดสอบเครื่องมือวัด หมายเหตุ 2: ฉันต้องการบริบทของโครงการทดสอบไม่ใช่บริบทของแอปพลิเคชันจริงที่ทดสอบ ฉันต้องการสิ่งนี้เพื่อโหลดไฟล์บางไฟล์จากเนื้อหาจากโครงการทดสอบ
108 android  junit 

13
วิธีแก้ไขข้อยกเว้น Stubbing ที่ไม่จำเป็น
รหัสของฉันมีดังต่อไปนี้ @RunWith(MockitoJUnitRunner.class) public class MyClass { private static final String code ="Test"; @Mock private MyClassDAO dao; @InjectMocks private MyClassService Service = new MyClassServiceImpl(); @Test public void testDoSearch() throws Exception { final String METHOD_NAME = logger.getName().concat(".testDoSearchEcRcfInspections()"); CriteriaDTO dto = new CriteriaDTO(); dto.setCode(code); inspectionService.searchEcRcfInspections(dto); List<SearchCriteriaDTO> summaryList = new ArrayList<SearchCriteriaDTO>(); inspectionsSummaryList.add(dto); when(dao.doSearch(dto)).thenReturn(inspectionsSummaryList);//got error …
107 java  junit  mockito 

30
ไม่พบการทดสอบกับนักวิ่งทดสอบ 'JUnit 4'
การทดสอบ Java ของฉันทำงานได้ดีจาก Eclipse แต่ตอนนี้เมื่อฉันเปิดการทดสอบอีกครั้งจากเมนูเรียกใช้ฉันจะได้รับข้อความต่อไปนี้: No tests found with test runner 'JUnit 4' ใน.classpathไฟล์ฉันมีjarไฟล์ทั้งหมดและในตอนท้ายมี: <classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="output" path="bin"/> </classpath> ฉันจะแก้ไขข้อผิดพลาดนี้และเรียกใช้การทดสอบอีกครั้งได้อย่างไร
106 java  eclipse  junit  junit4 

12
การทดสอบวิธีการส่วนตัวโดยใช้ mockito
ชั้นสาธารณะ A { วิธีโมฆะสาธารณะ (บูลีน b) { ถ้า (b == จริง) วิธีที่ 1 (); อื่น วิธีที่ 2 (); } โมฆะส่วนตัว method1 () {} โมฆะส่วนตัว method2 () {} } ชั้นเรียนสาธารณะ TestA { @ทดสอบ โมฆะสาธารณะ testMethod () { a = เยาะเย้ย (A.class); ก. วิธีการ (จริง); // วิธีการทดสอบเช่นตรวจสอบ (a) .method1 (); } } …
104 java  junit  mockito 

3
การใช้ PowerMockito.whenNew () ไม่ได้รับการเยาะเย้ยและเรียกวิธีการดั้งเดิม
ฉันมีรหัสแบบนี้ด้านล่าง: Class A { public boolean myMethod(someargs) { MyQueryClass query = new MyQueryClass(); Long id = query.getNextId(); // some more code } } Class MyQueryClass { .... public Long getNextId() { //lot of DB code, execute some DB query return id; } } ตอนนี้ฉันกำลังเขียนแบบทดสอบสำหรับ A.myMethod(someargs)เขียนสำหรับการทดสอบ ฉันต้องการข้ามวิธีการจริงquery.getNextId()และส่งคืนค่าต้นขั้วแทน MyQueryClassโดยทั่วไปฉันต้องการที่จะเยาะเย้ย ดังนั้นในกรณีทดสอบของฉันฉันได้ใช้: MyQueryClass query …
104 java  junit  mockito  powermock 


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