2011-10-04 37 views
5

Trong nỗ lực thiết kế các thành phần có thể sử dụng lại càng tốt, tôi đã suy nghĩ gần đây về khả năng được gọi là "chú thích bộ điều hợp". Bằng cách này, tôi có nghĩa là việc áp dụng các mẫu cổ điển Adapter OO sang Java. Vì vậy, ví dụ, giả sử tôi có một bộ thử nghiệm đơn vị hoàn toàn dựa trên JUnit. Tôi sẽ cần phải chú thích tất cả các phương pháp thử nghiệm của tôi như sau:Chú thích Bộ điều hợp Java

public class WidgetTest 
{ 
    @Test 
    public void test_WidgetConstructor() 
    { 
     // ... 
    } 
} 

Nhưng nếu, sau khi tạo một bộ kiểm tra với, nói, 1000 lớp học thử nghiệm, tôi đã quyết định muốn bắt đầu kiểm tra đơn vị với một số thương hiệu siêu mới -cool khuôn khổ kiểm tra yêu cầu tất cả các phương pháp thử nghiệm để được chú thích như sau:

public class WidgetTest 
{ 
    @SuperCoolUnitTest(someParam="true") 
    public void test_WidgetConstructor() 
    { 
     // ... 
    } 
} 

Bây giờ, trong ví dụ cụ thể này, nó có thể được hoàn toàn khả thi để tìm kiếm-n-thay thế các chú thích cũ cho những người mới, nhưng trong một ứng dụng thực tế, đây sẽ không phải là một giải pháp khả thi.

Vì vậy, nó sẽ có thể cho tôi "quấn" chú thích thử nghiệm đơn vị của tôi với một cái gì đó trong nước, như:

public class WidgetTest 
{ 
    @HomegrownUnitTestAnnotation 
    public void test_WidgetConstructor() 
    { 
     // ... 
    } 
} 

Và sau đó xây dựng bộ xử lý chú thích của riêng tôi mà sẽ chuyển đổi các trường hợp @HomegrownUnitTestAnnotation để bất cứ chú thích Tôi hiện cần (hoặc là @Test hoặc @SuperCoolUnitTest(someParam="true"))?

Rõ ràng, câu hỏi này áp dụng cho tất cả các chú thích, không chỉ các câu hỏi được cung cấp bởi JUnit. Tôi về cơ bản hỏi nếu nó có thể bọc chú thích của bên thứ 3 vì lợi ích của reusability/tách mối quan tâm/etc. Cảm ơn trước!

+0

Vì vậy, 'khung kiểm tra hoàn toàn mới' là bắt buộc để loại bỏ API JUnit (như Assert ...)? – home

+0

Có nhiều trường hợp chỉ chú thích được sử dụng để trang trí các lớp và phương thức, mà không có bất kỳ cuộc gọi API nào được gọi bên trong các phương thức đó. Giống như tôi đã nêu trong câu hỏi, đây không phải là một kịch bản cụ thể của JUnit, tôi hỏi liệu có thể xây dựng các bộ xử lý chú thích có thể ánh xạ một loại chú thích này tới một chú thích khác hay không. – IAmYourFaja

+0

Ahhhhh rất hay! Cảm ơn @home. Tôi đoán câu trả lời ngắn cho câu hỏi của tôi là "có", mặc dù tôi tự hỏi nếu có một "thuần Java" (không phải Spring) cách để làm điều này. Rõ ràng là, nếu Spring làm điều đó với các chú giải meta này, thì nó phải có khả năng tạo ra một giải pháp tự phát triển. Nếu bạn thay đổi nhận xét của bạn thành một câu trả lời, tôi sẽ vui lòng kiểm tra nó cho bạn. Cảm ơn một lần nữa. – IAmYourFaja

Trả lời

Các vấn đề liên quan