ฉันพบการใช้งานที่เหมาะสม (หรืออย่างน้อยเอกสาร) ของ JUnit ทำให้เกิดความสับสนมาก คำถามนี้ทำหน้าที่เป็นข้อมูลอ้างอิงในอนาคตและเป็นคำถามจริง
หากฉันเข้าใจถูกต้องมีสองวิธีหลักในการสร้างและเรียกใช้การทดสอบ JUnit:
วิธี A (JUnit 3 สไตล์):สร้างคลาสที่ขยาย TestCase test
และเริ่มวิธีการทดสอบที่มีคำว่า เมื่อรันคลาสเป็น JUnit Test (ใน Eclipse) วิธีการทั้งหมดที่เริ่มต้นด้วยคำtest
จะถูกเรียกใช้โดยอัตโนมัติ
import junit.framework.TestCase;
public class DummyTestA extends TestCase {
public void testSum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
Approach B (JUnit 4-style):สร้างคลาส 'Normal' และใส่@Test
หมายเหตุประกอบลงในเมธอด test
โปรดทราบว่าคุณไม่ได้มีวิธีการที่จะเริ่มต้นที่มีคำว่า
import org.junit.*;
import static org.junit.Assert.*;
public class DummyTestB {
@Test
public void Sum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
ผสมทั้งสองดูเหมือนจะไม่เป็นความคิดที่ดีดูเช่นคำถาม stackoverflow นี้ :
ตอนนี้คำถามของฉัน:
- อะไรคือแนวทางที่ต้องการหรือเมื่อใดที่คุณจะใช้วิธีหนึ่งแทนวิธีอื่น
- วิธี B ช่วยให้สำหรับการทดสอบสำหรับข้อยกเว้นโดยการขยายคำอธิบายประกอบ @Test
@Test(expected = ArithmeticException.class)
เหมือนใน แต่คุณจะทดสอบข้อยกเว้นเมื่อใช้วิธี A ได้อย่างไร เมื่อใช้วิธีการ A คุณสามารถจัดกลุ่มคลาสการทดสอบจำนวนหนึ่งในชุดการทดสอบดังนี้:
TestSuite suite = new TestSuite("All tests");
suite.addTestSuite(DummyTestA.class);
suite.addTestSuite(DummyTestAbis.class);
แต่สิ่งนี้ไม่สามารถใช้กับวิธี B (เนื่องจากแต่ละคลาสควรเป็นคลาสย่อย TestCase) วิธีที่เหมาะสมในการทดสอบกลุ่มสำหรับวิธีการ B คืออะไร?
แก้ไข: ฉันได้เพิ่มเวอร์ชัน JUnit ให้กับทั้งสองวิธี
extends TestCase
แล้วการทดสอบแต่ละครั้งก็มีหมายเหตุประกอบ@Test
เพียงเพื่อทำให้สับสน :)