Tôi đang phát triển một tính năng Eclipse bao gồm một số trình bổ sung Eclipse, sử dụng Dịch vụ khai báo Equinox (DS) để kết nối các plugin với nhau khi chạy. Tôi muốn thêm các bài kiểm tra tích hợp để xác minh cấu hình equinox.Thực hành tốt nhất cho thử nghiệm tích hợp tính năng Eclipse
Đặc biệt, tôi muốn xác minh rằng
- các thành phần dịch vụ liên kết lại với nhau như mong đợi
- các bó được kích hoạt
-
các plugin chia sẻ thông tin như mong đợi(xem Chỉnh sửa 2)
Hơn nữa, tôi muốn làm cho thử nghiệm tích hợp này trở thành một phần của tiếp theo quy trình tích hợp không liên tục bằng cách sử dụng một bản xây dựng không đầu của PDE Eclipse (như được mô tả here và here).
Câu hỏi của tôi là: bạn có thể giới thiệu bất kỳ khuôn khổ, công cụ, hay các hoạt động sẽ tạo điều kiện kiểu này thử nghiệm tích hợp trong các khó khăn tôi đã xác định?
Tôi đã tìm thấy hai diễn viên chính cho đến nay:
- Spring Dynamic Modules bao gồm một khuôn khổ cho việc thử nghiệm tích hợp OSGi. Tuy nhiên, tôi đã không thể có được một thử nghiệm Spring DM đơn giản để chạy trong Eclipse. Nó phàn nàn rằng "nền tảng đã chạy".
- Pax Exam (trước đây là Pax Drone) là một khung kiểm tra tích hợp OSGi khác.
Chỉnh sửa Chỉnh sửa, mỗi plugin có thành phần dịch vụ OSGi được định cấu hình với tệp xml định nghĩa thành phần. Lỗi trong một trong các tệp cấu hình này sẽ không phá vỡ bất kỳ phụ thuộc plugin nào và có thể dễ dàng bị bỏ qua cho đến khi chạy. Kiểm thử tích hợp là cần thiết để phát hiện lỗi như vậy.
Chỉnh sửa 2: Cho đến nay mọi thứ tôi đã thấy có vẻ xác nhận xác nhận của Uri (xem bên dưới) rằng tính năng đa plugin của Eclipse không được tích hợp thử nghiệm ở cấp tính năng/sản phẩm. Tôi sẵn sàng để đi mà không có thử nghiệm tích hợp toàn diện nếu tôi ít nhất có thể tự động xác minh rằng các thành phần dịch vụ liên kết với nhau một cách chính xác.
cách tiếp cận của tôi (không làm việc chưa):
In a JUnit test do
For each bundle/plugin of interest
Get the osgi Bundle object with org.eclipse.core.runtime.Platform.getBundle()
Verify that the Bundle is active with Bundle.getState()
Verify that the Bundle is using the expected services with Bundle.getServicesInUse()
Verify that the Bundle has registered the expected services with Bundle.getRegisteredServices()
Tôi đang chạy mã của tôi với Eclipse Plug-in Kiểm tra cấu hình khởi động, tung ra sản phẩm Eclipse của tôi là "Chương trình để chạy". Khi chạy thử nghiệm, tôi có thể xác minh rằng các gói đang hoạt động nhưng các thành phần dịch vụ không được kích hoạt và các phương thức getServicesInUse và getRegisteredServices trả về null. Tôi đã tải một lớp từ mỗi gói trong trường hợp đó là vấn đề kích hoạt lười biếng, nhưng điều đó không giúp ích gì. Tôi cũng đã xác minh rằng tất cả các thành phần dịch vụ là các thành phần "ngay lập tức", vì vậy chúng sẽ được kích hoạt ngay sau khi các gói của chúng được kích hoạt. Tại sao Equinox DS không làm phép thuật?
@Yossi Dahan: Sau câu hỏi này, bạn có tìm cách triển khai 'kiểm tra tích hợp' này trong OSGi/Equinox không? Chúng tôi đang đối mặt với cùng một câu hỏi tại thời điểm này – maasg