JUnit Testcases ใน Java: Simple JUnit 5.7.1 บทช่วยสอน Hello World พร้อมรายละเอียดทั้งหมดในที่เดียว
เผยแพร่แล้ว: 2019-10-30
JUnit คืออะไร?
JUnit เป็นเฟรมเวิร์กโอเพ่นซอร์สที่เรียบง่าย ทรงพลัง สำหรับเขียนและรันการทดสอบที่ทำซ้ำได้ ฉันชอบเคสทดสอบของ JUnit ในระหว่างการพัฒนาโปรเจ็กต์ Java ฉันใช้ JUnit อย่างกว้างขวางเพื่อครอบคลุมโค้ด เป็นตัวอย่างของสถาปัตยกรรม xUnit สำหรับเฟรมเวิร์กการทดสอบหน่วย
คุณสมบัติของ JUnit รวมถึง:
- การยืนยันสำหรับการทดสอบผลลัพธ์ที่คาดหวัง
- อุปกรณ์ทดสอบสำหรับการแบ่งปันข้อมูลการทดสอบทั่วไป
- นักวิ่งทดสอบสำหรับการทดสอบการวิ่ง
ในบทช่วยสอนนี้ ฉันจะพูดถึงจุดที่ 1 และ 3 คุณต้องมีการอ้างอิง maven ที่ต่ำกว่าในโครงการของคุณ
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
มาเริ่มเขียนโค้ดกันเลย
ขั้นตอนที่ 1
สร้างโครงการ CrunchifyJunitTest
และระบุแพ็คเกจ com.crunchify.junit
นี่คือโครงสร้างแพ็คเกจสำหรับการอ้างอิงอย่างรวดเร็ว

ขั้นตอนที่ 2
คลิกขวาที่ CrunchifyJunitTest
=> New Class => CrunchifyJunitTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
ขั้นตอนที่ 3
Eclipse จะแนะนำและเพิ่มการพึ่งพา org.junit.Test
โดยอัตโนมัติเมื่อคุณพิมพ์ @Test

ขั้นตอนที่ 4
เพื่อทดสอบการทดสอบ JUnit ของคุณ
- คลิกขวาที่คลาส
- คลิกที่ Run As
- คลิกที่
JUnit Test
คุณควรเห็นอะไรแบบนี้

ขั้นตอนที่ -5
ลองเปลี่ยนวิธีการคาดหวังค่าพารามิเตอร์จาก 30 => 300
และจาก Hello World => Hello -- World
แล้วทดสอบอีกครั้ง
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

ขั้นตอนที่ 6
ตอนนี้ให้เรียกใช้กรณีทดสอบเดียวกัน via other java
สร้าง CrunchifyRunnerJUnit.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
ขั้นตอนที่ 7
รัน CrunchifyRunnerJUnit.java
เป็น Java Application
ขั้นตอนที่-8
ในกรณีของ 1st code
(พารามิเตอร์ที่คาดไว้ถูกต้อง) คุณควรเห็นผลลัพธ์ดังนี้:
1 |
Both Tests finished successfully . . . |
ขั้นตอนที่ 9
ในกรณีของ 2nd code
(พารามิเตอร์ที่คาดไว้ไม่ถูกต้อง) คุณควรเห็นสิ่งนี้:
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
และคุณพร้อมแล้ว โปรดแจ้งให้เราทราบหากคุณพบปัญหาในการเรียกใช้รหัสนี้
คำอธิบายประกอบที่มีอยู่ในกรณีทดสอบ JUnit:
คำอธิบายประกอบ | คำอธิบาย |
---|---|
@ทดสอบวิธีการโมฆะสาธารณะ () | คำอธิบายประกอบ @Test ระบุว่าเมธอดเป็นวิธีการทดสอบ |
@Before วิธีโมฆะสาธารณะ () | จะดำเนินการตามวิธีการก่อนการทดสอบแต่ละครั้ง วิธีนี้สามารถเตรียมสภาพแวดล้อมการทดสอบได้ (เช่น อ่านข้อมูลอินพุต เริ่มต้นคลาส) |
@หลังจากวิธีการโมฆะสาธารณะ () | จะดำเนินการตามวิธีการหลังจากการทดสอบแต่ละครั้ง วิธีนี้สามารถล้างสภาพแวดล้อมการทดสอบได้ (เช่น ลบข้อมูลชั่วคราว เรียกคืนค่าเริ่มต้น) |
@BeforeClass วิธีโมฆะสาธารณะ () | จะดำเนินการตามวิธีการหนึ่งครั้ง ก่อนเริ่มการทดสอบทั้งหมด สามารถใช้เพื่อทำกิจกรรมที่ต้องใช้เวลามาก เช่น เพื่อเชื่อมต่อกับฐานข้อมูล |
@ AfterClass วิธีโมฆะสาธารณะ () | จะดำเนินการตามวิธีการหนึ่งครั้งหลังจากการทดสอบทั้งหมดเสร็จสิ้น สามารถใช้เพื่อทำกิจกรรมการล้างข้อมูลได้ เช่น เพื่อยกเลิกการเชื่อมต่อจากฐานข้อมูล |
@ไม่สนใจ | จะละเว้นวิธีการทดสอบ สิ่งนี้มีประโยชน์เมื่อมีการเปลี่ยนแปลงโค้ดพื้นฐานและกรณีทดสอบยังไม่ได้รับการดัดแปลง หรือถ้าเวลาดำเนินการของการทดสอบนี้ยาวเกินไปที่จะรวม |
@Test (คาดหวัง = Exception.class) | ล้มเหลว หากเมธอดไม่ส่งข้อยกเว้นที่มีชื่อ |
@ทดสอบ(หมดเวลา=100) | ล้มเหลว หากวิธีการใช้เวลานานกว่า 100 มิลลิวินาที |
วิธีการทดสอบยืนยันที่ใช้ได้:
คำแถลง | คำอธิบาย |
---|---|
ล้มเหลว (สตริง) | ปล่อยให้วิธีการล้มเหลว อาจใช้ตรวจสอบว่าโค้ดบางส่วนไม่ถึง หรือให้มีการทดสอบที่ล้มเหลวก่อนที่จะมีการนำรหัสทดสอบไปใช้ |
ยืนยันจริง (จริง) / ยืนยันจริง (เท็จ) | จะเป็นจริง/เท็จเสมอ สามารถใช้เพื่อกำหนดผลการทดสอบล่วงหน้า หากยังไม่ได้ทำการทดสอบ |
assertTrue([ข้อความ] เงื่อนไขบูลีน) | ตรวจสอบว่าเงื่อนไขบูลีนเป็นจริง |
assertsEquals([ข้อความสตริง], คาดหวัง, จริง) | ทดสอบว่าค่าทั้งสองมีค่าเท่ากัน หมายเหตุ: สำหรับอาร์เรย์ การอ้างอิงจะถูกตรวจสอบไม่ใช่เนื้อหาของอาร์เรย์ |
assertsEquals([ข้อความสตริง], คาดหวัง, จริง, ค่าเผื่อ) | ทดสอบว่าค่าทศนิยมหรือค่าสองเท่าตรงกัน ค่าความคลาดเคลื่อนคือจำนวนทศนิยมที่ต้องเท่ากัน |
assertNull([ข้อความ] วัตถุ) | ตรวจสอบว่าอ็อบเจ็กต์เป็นโมฆะ |
assertNotNull([ข้อความ] วัตถุ) | ตรวจสอบว่าอ็อบเจ็กต์ไม่เป็นโมฆะ |
assertSame([สตริง], คาดหวัง, จริง) | ตรวจสอบว่าตัวแปรทั้งสองอ้างถึงอ็อบเจกต์เดียวกัน |
assertNotSame([สตริง], คาดหวัง, จริง) | ตรวจสอบว่าตัวแปรทั้งสองอ้างถึงอ็อบเจกต์ต่างกัน |