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

13
ได้รับ“ NoSuchMethodError: org.hamcrest.Matcher.describeMismatch” เมื่อเรียกใช้การทดสอบใน IntelliJ 10.5
ฉันใช้ JUnit-dep 4.10 และ Hamcrest 1.3.RC2 ฉันได้สร้าง matcher ที่กำหนดเองที่มีลักษณะดังนี้: public static class MyMatcher extends TypeSafeMatcher<String> { @Override protected boolean matchesSafely(String s) { /* implementation */ } @Override public void describeTo(Description description) { /* implementation */ } @Override protected void describeMismatchSafely(String item, Description mismatchDescription) { /* implementation */ } } มันทำงานได้อย่างสมบูรณ์แบบเมื่อทำงานจากบรรทัดคำสั่งโดยใช้ …

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


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 

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

7
ฉันจะยืนยันว่า Iterable มีองค์ประกอบที่มีคุณสมบัติบางอย่างได้อย่างไร
สมมติว่าฉันต้องการทดสอบหน่วยวิธีด้วยลายเซ็นนี้: List<MyItem> getMyItems(); สมมติว่าMyItemเป็น Pojo ที่มีคุณสมบัติหลายอย่างซึ่งหนึ่งในนั้น"name"เข้าถึงได้ผ่านทางgetName(). สิ่งที่ฉันสนใจเกี่ยวกับการตรวจสอบก็คือList<MyItem>หรือใด ๆ ที่IterableมีสองMyItemอินสแตนซ์ซึ่ง"name"คุณสมบัติมีค่า"foo"และ"bar". หากคุณสมบัติอื่นไม่ตรงกันฉันไม่สนใจวัตถุประสงค์ของการทดสอบนี้จริงๆ หากชื่อตรงกันแสดงว่าสำเร็จแล้ว ฉันต้องการให้เป็นซับเดียวถ้าเป็นไปได้ นี่คือ "ไวยากรณ์หลอก" บางส่วนที่ฉันอยากจะทำ assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"}); Hamcrest จะดีสำหรับสิ่งประเภทนี้หรือไม่? ถ้าเป็นเช่นนั้นไวยากรณ์หลอกของฉันจะเป็นอย่างไร

8
จะใช้ JUnit และ Hamcrest ร่วมกันได้อย่างไร?
ฉันไม่เข้าใจว่า JUnit 4.8 ควรทำงานกับ Hamcrest matchers ได้อย่างไร มี matchers บางที่กำหนดไว้ด้านในเป็นในjunit-4.8.jar org.hamcrest.CoreMatchersในขณะเดียวกันก็มีผู้จับคู่อื่น ๆhamcrest-all-1.1.jarเข้าorg.hamcrest.Matchersมา แล้วจะไปไหนดี? ฉันจะรวม hamcrest JAR ไว้ในโปรเจ็กต์อย่างชัดเจนและไม่สนใจตัวจับคู่ที่ JUnit จัดหาให้หรือไม่ โดยเฉพาะอย่างยิ่งฉันสนใจเรื่องการempty()จับคู่และหาไม่พบในขวดเหล่านี้ ฉันต้องการอย่างอื่น? :) และคำถามเชิงปรัชญา: ทำไม JUnit รวมorg.hamcrestแพ็คเกจไว้ในการแจกจ่ายของตัวเองแทนที่จะสนับสนุนให้เราใช้ห้องสมุดแฮมเครสต์ดั้งเดิม
89 java  junit  hamcrest 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.