Introduction to JUnit

การทดสอบใน Java เบื้องต้น

Maria Milusheva

Senior Software Engineer

ข้อมูลเบื้องต้น

  • JUnit คือไลบรารีทดสอบ Java ที่ได้รับความนิยมสูงสุด
  • ได้รับการดูแลและอัปเดตอย่างต่อเนื่อง

ภาพโลโก้ JUnit 5

การทดสอบใน Java เบื้องต้น

การเขียน JUnit test

มาเขียนเทสต์สำหรับเมธอด addTwoNumbers() กัน:

public int addTwoNumbers(int a, int b) {
    return a + b;
}
การทดสอบใน Java เบื้องต้น

JUnit @Test annotation

  • ติดตั้ง JUnit ผ่าน IDE หรือ build tools (ดูตัวอย่างในแหล่งอ้างอิง)

  • ทุก test ต้องมี annotation @Test:

import org.junit.jupiter.api.Test;

@Test 
// Test method will be here

Annotation คือ metadata พิเศษที่บอกให้ compiler และ framework รู้ว่าต้องจัดการเมธอดนั้นอย่างไร โดย annotation จะขึ้นต้นด้วย @

1 https://www.jetbrains.com/help/idea/junit.html
การทดสอบใน Java เบื้องต้น

โครงสร้าง JUnit test

import org.junit.jupiter.api.Test;

@Test 

void testAddTwoNumbers() {
// Arrange - Given int num1 = 2; int num2 = 2;
// Act - When int actual = addTwoNumbers(num1, num2);
// Assert - Then assertEquals(4, actual); }
การทดสอบใน Java เบื้องต้น

Assert statements

  • ใช้เปรียบเทียบผลลัพธ์ actual กับผลลัพธ์ expected อย่างรวดเร็ว
  • หาก expected และ actual ไม่ตรงกัน เทสต์จะล้มเหลว
  • ช่วยตรวจจับบั๊กและข้อผิดพลาดได้อย่างรวดเร็ว

กราฟิกแสดง assert statement

การทดสอบใน Java เบื้องต้น

ผลลัพธ์ของ test

พิจารณา assertion นี้:

assertEquals(4, actual); // Will succeed if actual == 4

หากสำเร็จ จะแสดงข้อความ Test passed

หากค่าไม่เท่ากัน เช่น actual = 5:

org.opentest4j.AssertionFailedError: expected: <4> but was: <5>

อย่าลืมลำดับ argument! ใน JUnit argument แรกคือค่า expected

การทดสอบใน Java เบื้องต้น

เทสต์เพิ่มเติมสำหรับ overflow

@Test 

void testAddTwoNumbers() { // Given int num1 = 2147483647; int num2 = 1; // When int actual = addTwoNumbers(num1, num2); // Then assertEquals(-2147483648, actual); }
การทดสอบใน Java เบื้องต้น

หมายเหตุเกี่ยวกับ JUnit และการทดสอบ

  • หนึ่ง test มี assertion ได้หลายรายการ
  • ทุก assertion ต้องผ่านจึงจะถือว่า test ผ่าน
  • นำเข้า assertion ทั้งหมดได้ด้วย:
import org.junit.jupiter.api.Assertions.*;
การทดสอบใน Java เบื้องต้น

หมายเหตุเพิ่มเติม

  • ต่อไปนี้คือเครื่องมือเฉพาะของ DataCamp ไม่จำเป็นต้องใช้ใน IDE:
import static com.datacamp.util.testing.CustomJUnitTestLauncher.launchTestsAndPrint;
  • import static package.Class.method ช่วยให้เรียกใช้ method ได้โดยตรง โดยไม่ต้องพิมพ์ package.Class.method
import static java.lang.Math.max;

...

max(3,5); // Instead of Math.max(3, 5)
การทดสอบใน Java เบื้องต้น

มาฝึกกันเถอะ!

การทดสอบใน Java เบื้องต้น

Preparing Video For Download...