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

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

30
คุณยืนยันว่ามีข้อยกเว้นบางอย่างเกิดขึ้นในการทดสอบ JUnit 4 ได้อย่างไร
ฉันจะใช้ JUnit4 โดยใช้สำนวนเพื่อทดสอบว่าบางรหัสผิดพลาดได้อย่างไร ในขณะที่ฉันสามารถทำอะไรเช่นนี้: @Test public void testFooThrowsIndexOutOfBoundsException() { boolean thrown = false; try { foo.doStuff(); } catch (IndexOutOfBoundsException e) { thrown = true; } assertTrue(thrown); } ฉันจำได้ว่ามีคำอธิบายประกอบหรือ Assert.xyz หรือบางสิ่งที่มีความบกพร่องน้อยกว่าและมีจิตวิญญาณของ JUnit มากขึ้นสำหรับสถานการณ์ประเภทนี้
1999 java  exception  junit  junit4  assert 

4
ความแตกต่างระหว่าง @Before, @BeforeClass, @BeforeEach และ @BeforeAll
ความแตกต่างที่สำคัญระหว่างคืออะไร @Before และ @BeforeClass และใน JUnit 5 @BeforeEachและ@BeforeAll @After และ @AfterClass ตามที่JUnit Api @Beforeใช้ในกรณีต่อไปนี้: เมื่อเขียนการทดสอบเป็นเรื่องปกติที่พบว่าการทดสอบหลายรายการต้องการวัตถุที่คล้ายกันที่สร้างขึ้นก่อนที่จะสามารถเรียกใช้ได้ ในขณะที่@BeforeClassสามารถใช้เพื่อสร้างการเชื่อมต่อฐานข้อมูล แต่@Beforeทำไม่ได้เหมือนกันเหรอ?

11
เหตุใด JUnit จึงไม่ให้วิธีการ assertNotEquals
มีใครรู้บ้างไหมว่าทำไม JUnit 4 จึงมีวิธีการassertEquals(foo,bar)แต่ไม่ใช่assertNotEqual(foo,bar) มันมีassertNotSame(ตรงกับassertSame) และassertFalse(ตรงกับassertTrue) assertNotEqualดังนั้นจึงดูเหมือนว่าแปลกที่พวกเขาไม่ได้รำคาญรวมถึง โดยวิธีการที่ฉันรู้ว่า JUnit-addons ให้วิธีการที่ฉันกำลังมองหา ฉันแค่ขอจากความอยากรู้
429 java  junit  assert 

29
Maven ไม่พบการทดสอบ JUnit ที่จะเรียกใช้
ฉันมีโปรแกรม maven มันรวบรวมได้ดี เมื่อฉันเรียกใช้mvn testจะไม่เรียกใช้การทดสอบใด ๆ (ภายใต้หัวข้อ TESTs บอกว่าThere are no tests to run.) -Xผมเคยสร้างปัญหานี้ด้วยการติดตั้งง่ายสุดซึ่งผมจะรวมถึงด้านล่างเช่นเดียวกับการส่งออกเมื่อทำงานกับ การทดสอบหน่วยทำงานได้ดีจาก eclipse (ทั้งคู่กับแพ็คเกจ junit เริ่มต้นและเมื่อฉันรวม junit.jar ที่ดาวน์โหลดโดย maven) mvn ยังtest-compileสร้างคลาสได้อย่างถูกต้องภายใต้คลาสทดสอบ ฉันใช้งานบน OSX 10.6.7 ด้วย Maven 3.0.2 และ java 1.6.0_24 นี่คือโครงสร้างไดเรกทอรี: /my_program/pom.xml /my_program/src/main/java/ClassUnderTest.java /my_program/src/test/java/ClassUnderTestTests.java pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my_group</groupId> <artifactId>my_program</artifactId> …
416 java  maven  junit  junit4  maven-3 

18
วิธีรันเมธอดการทดสอบตามลำดับเฉพาะใน JUnit4
ฉันต้องการที่จะดำเนินการวิธีการทดสอบที่มีคำอธิบายประกอบตาม@Testลำดับที่เฉพาะเจาะจง ตัวอย่างเช่น: public class MyTest { @Test public void test1(){} @Test public void test2(){} } ฉันต้องการที่จะให้แน่ใจว่าจะเรียกใช้test1()ก่อนtest2()ทุกครั้งที่ผมทำงานแต่ฉันไม่สามารถหาคำอธิบายประกอบเช่นMyTest@Test(order=xx) ฉันคิดว่ามันเป็นคุณสมบัติที่สำคัญมากสำหรับ JUnit หากผู้เขียน JUnit ไม่ต้องการคุณลักษณะการสั่งซื้อทำไม?

12
ทดสอบ JUnit สำหรับ System.out.println ()
ฉันต้องเขียนการทดสอบ JUnit สำหรับแอปพลิเคชันเก่าที่ออกแบบมาไม่ดีและกำลังเขียนข้อความแสดงข้อผิดพลาดจำนวนมากไปยังเอาต์พุตมาตรฐาน เมื่อgetResponse(String request)วิธีการทำงานอย่างถูกต้องจะส่งกลับการตอบสนอง XML: @BeforeClass public static void setUpClass() throws Exception { Properties queries = loadPropertiesFile("requests.properties"); Properties responses = loadPropertiesFile("responses.properties"); instance = new ResponseGenerator(queries, responses); } @Test public void testGetResponse() { String request = "<some>request</some>"; String expResult = "<some>response</some>"; String result = instance.getResponse(request); assertEquals(expResult, result); } แต่เมื่อได้รับ XML …
370 java  console  junit 

4
ละเว้นการทดสอบตามเงื่อนไขใน JUnit 4
ตกลงดังนั้น@Ignoreคำอธิบายประกอบจึงเหมาะสำหรับการทำเครื่องหมายว่าไม่ควรรันกรณีทดสอบ อย่างไรก็ตามบางครั้งฉันต้องการละเว้นการทดสอบตามข้อมูลรันไทม์ ตัวอย่างอาจเป็นได้ถ้าฉันมีการทดสอบพร้อมกันที่จำเป็นต้องเรียกใช้บนเครื่องที่มีคอร์จำนวนหนึ่ง หากการทดสอบนี้รันบนเครื่องประมวลผลเดี่ยวฉันไม่คิดว่ามันจะถูกต้องเพียงแค่ผ่านการทดสอบ (เนื่องจากยังไม่ได้รัน) และแน่นอนว่าจะไม่ถูกต้องที่จะล้มเหลวในการทดสอบและทำลายการสร้าง . ดังนั้นฉันจึงต้องการที่จะละเว้นการทดสอบที่รันไทม์เนื่องจากดูเหมือนว่าผลลัพธ์ที่ถูกต้อง (เนื่องจากกรอบการทดสอบจะอนุญาตให้บิลด์ผ่าน แต่บันทึกว่าการทดสอบไม่ได้ทำงาน) ฉันค่อนข้างแน่ใจว่าคำอธิบายประกอบจะไม่ให้ความยืดหยุ่นนี้แก่ฉันและสงสัยว่าฉันจะต้องสร้างชุดทดสอบสำหรับชั้นเรียนด้วยตนเอง อย่างไรก็ตามเอกสารไม่ได้พูดถึงอะไรเกี่ยวกับเรื่องนี้และมองผ่านAPIมันยังไม่ชัดเจนว่าจะทำอย่างไรในทางโปรแกรม (เช่นฉันจะสร้างอินสแตนซ์ของTestหรือคล้ายกัน@Ignoreอย่างไรโดยทางโปรแกรม หากใครเคยทำสิ่งที่คล้ายกันในอดีตหรือมีความคิดที่ชัดเจนว่าฉันจะทำสิ่งนี้ได้อย่างไรฉันยินดีที่จะรับฟัง

9
Mockito: การพยายามสอดแนมวิธีกำลังเรียกใช้วิธีดั้งเดิม
ฉันใช้ Mockito 1.9.0 ฉันต้องการจำลองพฤติกรรมสำหรับวิธีการหนึ่งของชั้นเรียนในการทดสอบ JUnit ดังนั้นฉันมี final MyClass myClassSpy = Mockito.spy(myInstance); Mockito.when(myClassSpy.method1()).thenReturn(myResults); ปัญหาคือในบรรทัดที่สองmyClassSpy.method1()กำลังถูกเรียกใช้จริงส่งผลให้เกิดข้อยกเว้น เหตุผลเดียวที่ฉันใช้ mocks คือเพื่อที่ในภายหลังเมื่อใดก็ตามที่myClassSpy.method1()มีการเรียกวิธีการจริงจะไม่ถูกเรียกและmyResultsวัตถุจะถูกส่งกลับ MyClassเป็นอินเทอร์เฟซและmyInstanceเป็นการนำไปปฏิบัติหากสิ่งนั้นสำคัญ ฉันต้องทำอะไรเพื่อแก้ไขพฤติกรรมการสอดแนมนี้
352 java  junit  mockito 


7
Mockito: วิธีการตรวจสอบวิธีการถูกเรียกบนวัตถุที่สร้างขึ้นภายในวิธี?
ฉันใหม่กับ Mockito จากคลาสด้านล่างฉันจะใช้ Mockito เพื่อตรวจสอบว่าsomeMethodถูกเรียกใช้หลังจากfooถูกเรียกได้อย่างไร public class Foo { public void foo(){ Bar bar = new Bar(); bar.someMethod(); } } ฉันต้องการโทรยืนยันดังต่อไปนี้ verify(bar, times(1)).someMethod(); ที่เป็นเช่นล้อเลียนของbarBar

1
วิธียืนยันวิธีเรียกสองครั้งด้วยการตรวจสอบ mockito ()
ฉันต้องการตรวจสอบว่าวิธีการใดเรียกอย่างน้อยหนึ่งครั้งผ่านการตรวจสอบ mockito ฉันใช้การตรวจสอบและมันบ่นเช่นนี้: org.mockito.exceptions.verification.TooManyActualInvocations: Wanted 1 time: But was 2 times. Undesired invocation:
307 junit  mockito  verify 


23
ฉีด Mockito mocks ลงใน Spring bean
ฉันต้องการฉีดวัตถุจำลอง Mockito ลงในถั่ว Spring (3+) เพื่อวัตถุประสงค์ในการทดสอบหน่วยกับ JUnit ขณะนี้การพึ่งพาถั่วของฉันถูกฉีดโดยใช้@Autowiredคำอธิบายประกอบในฟิลด์สมาชิกส่วนตัว ฉันได้พิจารณาการใช้ReflectionTestUtils.setFieldแต่อินสแตนซ์ bean ที่ฉันต้องการฉีดเป็นจริงพร็อกซีและดังนั้นจึงไม่ประกาศเขตข้อมูลสมาชิกส่วนตัวของคลาสเป้าหมาย ฉันไม่ต้องการสร้าง setter สาธารณะเพื่อการพึ่งพาเนื่องจากฉันจะทำการปรับเปลี่ยนอินเตอร์เฟสของฉันอย่างหมดจดเพื่อวัตถุประสงค์ในการทดสอบ ฉันได้ทำตามคำแนะนำของชุมชน Spring แล้ว แต่การเยาะเย้ยไม่ได้เกิดขึ้นและการเดินสายอัตโนมัติล้มเหลว: <bean id="dao" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg value="com.package.Dao" /> </bean> ข้อผิดพลาดที่ฉันพบในขณะนี้มีดังนี้: ... Caused by: org...NoSuchBeanDefinitionException: No matching bean of type [com.package.Dao] found for dependency: expected at least 1 bean which qualifies as autowire candidate …

13
วิธีรับพา ธ ของไดเร็กทอรี src / test / resources ใน JUnit?
ฉันรู้ว่าฉันสามารถโหลดไฟล์จาก src / test / resources ด้วย: getClass().getResource("somefile").getFile() แต่ฉันจะหาเส้นทางแบบเต็มไปยังไดเรกทอรี src / test / resources ได้อย่างไรเช่นฉันไม่ต้องการโหลดไฟล์ฉันแค่อยากรู้เส้นทางของไดเรกทอรี
275 java  junit 

6
ความแตกต่างระหว่าง 2 JUnit Assert
เฟรมเวิร์ก JUnit มี 2 Assertคลาส (ในแพ็กเกจที่แตกต่างกันอย่างเห็นได้ชัด) และวิธีการในแต่ละรายการดูเหมือนจะคล้ายกัน มีใครอธิบายได้ไหมว่าเพราะเหตุใด เรียนผมหมายถึงคือ: และjunit.framework.Assertorg.junit.Assert

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