เชื่อมต่อเฟรมเวิร์ก JUnit
สำหรับการทดสอบโค้ด Java เรามีเฟรมเวิร์กที่ยอดเยี่ยมที่เรียกว่าJUnit มันใช้งานได้ดี มีการอัปเดตตลอดเวลา เป็นที่นิยมมาก และแน่นอนว่า Intellij IDEA ผสานรวมเข้ากับมันอย่างแน่นหนา
ตอนนี้ทุกคนกำลังใช้เวอร์ชันที่ห้าของเฟรมเวิร์กนี้ - JUnit 5แม้ว่าในหลาย ๆ โปรเจ็กต์ คุณยังสามารถค้นหาเวอร์ชันที่สี่ได้ พวกมันไม่แตกต่างกันมากนัก แต่เราจะพิจารณาอันล่าสุดต่อไป ฉันคิดว่าเมื่อถึงเวลาที่คุณเริ่มเขียนแบบทดสอบ คุณจะยอมรับตัวเลือกของฉัน
ดังนั้นจะเพิ่ม JUnit ในโครงการได้อย่างไร หลังจากเรียนรู้ Maven แล้ว มันจะง่ายมาก เพียงเพิ่มโค้ดนี้ใน pom.xml ของคุณ:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
อย่างไรก็ตาม ถ้าคุณต้องการให้ Maven เรียกใช้การทดสอบของคุณที่ระยะการสร้าง ( ระยะการทดสอบ ) คุณต้องเพิ่มส่วนย่อยอีกหนึ่งส่วนใน pom.xml:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
@ทดสอบคำอธิบายประกอบ
สมมติว่าคุณมีชั้นเรียนที่คุณต้องการทดสอบ วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? เริ่มจากตัวอย่างกันก่อน เพราะมันยากที่จะทดสอบคลาสนามธรรม :)
สมมติว่าเรามี คลาส เครื่องคิดเลขที่สามารถดำเนินการพื้นฐานได้ 4 อย่าง ได้แก่ การบวก การลบ การคูณ และการหาร มาเขียนกันเถอะ:
class Calculator {
public int add(int a, int b) {
return a+b;
}
public int sub(int a, int b) {
return a-b;
}
public int mul (int a, int b) {
return a*b;
}
public int div(int a, int b) {
return a/b;
}
}
เราต้องการทดสอบเมธอดของคลาสนี้ คุณไม่มีทางรู้หรอกว่าในอนาคตพวกเขาจะเปลี่ยนบางอย่างและทุกอย่างจะหยุดทำงาน เราจะเขียนการทดสอบได้อย่างไร
เราต้องสร้างคลาสอื่น ในการทำเช่น นี้พวกเขามักจะใช้ชื่อเดียวกันและเพิ่มส่วนต่อท้าย Test สำหรับแต่ละวิธี คุณต้องเพิ่มวิธีทดสอบอย่างน้อยหนึ่งวิธี ตัวอย่าง:
class CalculatorTest {
@Test
public void add() {
}
@Test
public void sub() {
}
@Test
public void mul() {
}
@Test
public void div() {
}
}
เคยมีข้อกำหนดว่าชื่อเมธอดจะขึ้นต้นด้วยคำว่าtestแต่ไม่จำเป็นอีกต่อไป
ตัวอย่างการทดสอบ JUnit
ลองเขียนตัวอย่างที่เราจะทดสอบวิธีการของ คลาส CalculatorTest :
class CalculatorTest {
@Test
public void add() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result);
}
@Test
public void sub() {
Calculator calc = new Calculator();
int result = calc.sub(10, 10);
assertEquals(0, result);
}
@Test
public void mul() {
Calculator calc = new Calculator();
int result = calc.mul(-5, -3);
assertEquals(15, result);
}
@Test
public void div() {
Calculator calc = new Calculator();
int result = calc.div(2, 3);
assertEquals(0, result);
}
}
นี่คือลักษณะของการทดสอบ JUnit ทั่วไป จากสิ่งที่น่าสนใจ: มีการใช้ วิธีพิเศษ assertEquals() ที่นี่ : โดยจะเปรียบเทียบพารามิเตอร์ที่ส่งผ่านไปยังมัน ตามที่ระบุโดยคำว่าเท่ากับในชื่อของมัน
หากพารามิเตอร์ที่ส่งไปยังassertEquals()ไม่เท่ากัน เมธอดจะโยนข้อยกเว้นและการทดสอบจะล้มเหลว ข้อยกเว้นนี้จะไม่ขัดขวางการทดสอบอื่นไม่ให้ทำงาน
GO TO FULL VERSION