Vì vậy, tôi đã bắt đầu kiểm tra đơn vị bố trí cho các bit mã sau đây:Unit Tests Kiến trúc Câu hỏi
public interface MyInterface {
void MyInterfaceMethod1();
void MyInterfaceMethod2();
}
public class MyImplementation1 implements MyInterface {
void MyInterfaceMethod1() {
// do something
}
void MyInterfaceMethod2() {
// do something else
}
void SubRoutineP() {
// other functionality specific to this implementation
}
}
public class MyImplementation2 implements MyInterface {
void MyInterfaceMethod1() {
// do a 3rd thing
}
void MyInterfaceMethod2() {
// do something completely different
}
void SubRoutineQ() {
// other functionality specific to this implementation
}
}
với một số hiện thực và sự mong đợi của hơn sắp tới.
suy nghĩ ban đầu của tôi là tự cứu lấy mình kiểm tra lại viết đơn vị thời gian với một cái gì đó như thế này:
public abstract class MyInterfaceTester {
protected MyInterface m_object;
@Setup
public void setUp() {
m_object = getTestedImplementation();
}
public abstract MyInterface getTestedImplementation();
@Test
public void testMyInterfaceMethod1() {
// use m_object to run tests
}
@Test
public void testMyInterfaceMethod2() {
// use m_object to run tests
}
}
mà tôi sau đó có thể phân lớp một cách dễ dàng để kiểm tra việc thực hiện phương pháp bổ sung cụ thể như sau:
public class MyImplementation1Tester extends MyInterfaceTester {
public MyInterface getTestedImplementation() {
return new MyImplementation1();
}
@Test
public void testSubRoutineP() {
// use m_object to run tests
}
}
và tương tự như vậy cho implmentation 2 trở đi.
Vì vậy, câu hỏi của tôi thực sự là: có lý do nào để không làm điều này không? JUnit dường như thích nó tốt, và nó phục vụ nhu cầu của tôi, nhưng tôi đã không thực sự nhìn thấy bất cứ điều gì giống như nó trong bất kỳ cuốn sách kiểm tra đơn vị và ví dụ tôi đã đọc.
Có một số phương pháp hay nhất mà tôi vô tình vi phạm không? Tôi có thể đặt mình lên vì đau khổ trên đường không? Có cách nào đơn giản hơn nhiều ra khỏi đó tôi đã không xem xét?
Cảm ơn bạn đã được trợ giúp.
Không biết về tính năng này, cảm ơn bạn đã chia sẻ. Thông tin thêm và ví dụ hoạt động tại đây: http://www.devx.com/Java/Article/31983/0/page/3 cho bất kỳ ai quan tâm. –