Làm cách nào để kiểm tra ArcObjects với Mocking?


10

Tôi là một fan hâm mộ lớn của thử nghiệm đơn vị, nhưng vẫn sử dụng FGDB để lấy các tính năng để chạy thử nghiệm đơn vị khi sử dụng khung ArcObjects.

Có ai sử dụng thành công chế giễu chống lại những suy nghĩ như IFeature, IGeometry, IWorkspace, v.v. Nếu vậy, tôi rất muốn xem một số ví dụ về cách bạn đang làm điều đó. Tôi không thực sự quan tâm đến việc bạn sử dụng khung mô phỏng nào, chỉ cần xem cách bạn thực hiện nó sẽ được đánh giá cao.

Vấn đề tôi thấy là bạn phải cắt và xúc xắc giữa rất nhiều giao diện trên cùng một đối tượng, rằng chi phí tạo ra một đối tượng giả đại diện sẽ rất lớn.


Đối với bất kỳ ai khác có thể không biết về Mocking (như tôi), vui lòng xem liên kết này. Công cụ thú vị. stackoverflow.com/questions/300177/ trộm
Simon

Câu trả lời:


14

Chúng tôi, trong một dự án lớn, đã quản lý khá tốt để tách mã ArcObjects khỏi logic kinh doanh của chúng tôi. Nói chung, đó là cách để đi, thay vì cố gắng chế giễu tất cả, ngay cả khi có thể sử dụng các khung mô phỏng để có được một số cách.

Tự hỏi bản thân, tại sao bạn cảm thấy cần phải chế giễu. Thông thường, đó là do một sự trừu tượng bị thiếu. Nghĩ về những trách nhiệm nhỏ và giảm thiểu bề mặt của con quái vật ArcObject khổng lồ, xấu xí. Tránh kéo theo các loại ArcObject chỉ vì một số khía cạnh của chúng là cần thiết ở đâu đó.

Tôi có thể đưa ra một ví dụ cụ thể từ dự án của chúng tôi. Một phần của mã dường như phụ thuộc vào IMxDocument. Hóa ra lý do duy nhất là chế độ xem hoạt động cần được làm mới. Vì vậy, chúng tôi đã tạo ra một giao diện IViewRefresher thay thế và chỉ hoạt động trên đó; dễ dàng để chế nhạo và kiểm tra. Ngoài ra, nó làm cho ý định của mã rõ ràng hơn nhiều và loại bỏ sự cám dỗ để ai đó bắt đầu làm những điều buồn cười với IMxDocument mà họ không nên làm vì tất cả những gì chúng tôi muốn làm ở đây là làm mới. Bài tập tương tự có thể được thực hiện với rất nhiều mã ArcObjects.

Ngoài ra, chúng tôi đã bao bọc tất cả quyền truy cập vào các lớp tính năng trong các trình bao bọc an toàn, một lần nữa cung cấp mã có thể giả được để che chắn mã doanh nghiệp khỏi ArcObjects.

Chúng tôi đã thảo luận thậm chí không sử dụng các loại hình học của ArcObjects, nhưng hiện tại chúng tôi cho phép các giao diện đó được sử dụng trực tiếp trong mã của chúng tôi. (Tuy nhiên, kiến ​​thức giao diện chỉ được cho phép và tất cả các cảnh báo về hình học đều sử dụng nhà máy hình học của riêng chúng tôi.)

Tóm lại, tôi không nản lòng chế giễu nhưng tôi khuyến khích chế giễu ở một mức độ trừu tượng khác với ArcObjects.


câu trả lời tuyệt vời Cumbayah. Tôi cũng có rất nhiều đơn vị thử nghiệm mã AO. Ví dụ bạn đưa ra rất hay (IViewRefresher) và tôi có thể áp dụng điều đó cho công việc của mình ở đây. Bạn có thể cho ví dụ thêm?
George Silva

Cảm ơn Cumbayah. Đây là những gì tôi hiện đang làm trên các dự án vừa và lớn, tạo ra một hội đồng riêng biệt để trừu tượng hóa tất cả việc thực hiện AO. Đây là sự trừu tượng hóa mà tôi muốn kiểm tra mà không cần dùng đến dữ liệu được lưu trữ, có thể là không gian làm việc XML hoặc cơ sở dữ liệu địa lý loại này hay loại khác. Tôi thấy rằng theo thời gian với các dữ liệu khác nhau, các vấn đề mới xuất hiện, sau đó cần phải có các thử nghiệm được tạo cho, đòi hỏi phải có thêm dữ liệu thử nghiệm. Theo thời gian, tôi có rất nhiều dữ liệu thử nghiệm cho tất cả các trường hợp thử nghiệm, rằng các dự án trở nên khổng lồ để quản lý và di chuyển xung quanh, hãy cùng tải xuống bởi máy chủ xây dựng tự động của tôi.
BlinkyBill

Cumbayah, điều này nghe có vẻ khó tin. Tôi rất thích một số ví dụ. Bạn đã bao giờ xem xét trình bày một cái gì đó về chủ đề này tại một trong các hội nghị ESRI chưa? Tôi nghĩ rằng cộng đồng ESRI / GIS đang chết vì loại công cụ này. Rất thích thấy một số chuyển động nguồn mở được bắt đầu để thử nghiệm / chế nhạo ArcObjects.
Keith G

Đây là một chủ đề cũ tôi hiểu, nhưng bất kỳ cơ hội nào chúng ta có thể lấy một mẫu của "nhà máy hình học của riêng bạn"? Tôi đang cố gắng để tổ chức của mình di chuyển theo hướng thử nghiệm đơn vị, nhưng tôi đang bị treo lên con khỉ ArcObjects.
Luke

4

Kiểm thử đơn vị cho các nhà phát triển Esri của Dave Bouwman và Brian Noyle là một khởi đầu khá tốt - đặc biệt là khi họ đã đưa ra một số để xem xét.


Cảm ơn con trỏ bwreilly. Những gì Dave làm mặc dù chỉ đơn giản là sử dụng các biểu diễn XML của các tính năng. Vì vậy, trong khi nó giúp, nó vẫn dựa vào việc lưu trữ dữ liệu để kiểm tra, đó là điều tôi đang cố gắng tránh xa.
BlinkyBill
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.