Chúng tôi đang phát triển các ứng dụng để sử dụng trong AutoCAD. Về cơ bản chúng tôi tạo ra một dự án thư viện lớp, và tải .dll trong AutoCAD với một lệnh (NETLOAD).Thực tiễn tốt nhất với thử nghiệm Đơn vị trên API phần mềm của bên thứ ba (AutoCAD)
Như vậy, chúng ta có thể sử dụng lệnh "bảng màu", kiểm soát người sử dụng, hình thức vv ...
Autodesk cung cấp một API thông qua một số của dll, chạy trong thư mục chương trình của họ. Khi tham khảo các dll của bạn chỉ có thể gọi dll của lúc chạy trong khi tải ứng dụng của bạn trong AutoCAD (Đây là một bảo mật cấp phép từ AutoDesk). Đối với chúng tôi, trong khi phát triển, đây không phải là vấn đề, chúng ta cần kiểm tra trực quan trong bối cảnh của AutoCAD, vì vậy chúng tôi chỉ cần thiết lập thuộc tính Debug để chúng bắt đầu acad.exe và tải dll của chúng tôi với một kịch bản lệnh trong tham số acad.exe.
Vấn đề là khi thử đơn vị kiểm tra mã của chúng tôi, NUnit hoặc mstest không chạy trong ngữ cảnh AutoCAD và chúng cũng không thể khởi động nó. Có một công cụ gọi là Gallio, đã cung cấp một giao diện với AutoCAD, để nó có thể chạy thử nghiệm Đơn vị thông qua IPC với Named Pipes.
Tuy nhiên, giải pháp này là, đối với tôi, quá nhiều rắc rối. Tôi muốn có thể nhanh chóng viết các bài kiểm tra mà không cần phải rời khỏi IDE yêu quý của mình.
Vì vậy, điều gì, từ "chế độ xem thiết kế tốt" sẽ là cách tiếp cận tốt cho vấn đề này? Tôi đang nghĩ về cơ bản tôi sẽ cần một codebase thử nghiệm mà không tham khảo dll của AutoCAD và không thể kiểm tra mà không tham chiếu đến dll AutoCAD không thể tin được.
Tôi chắc chắn có nhiều cách để làm việc này: (IOC, DI, Adapter Pattern,.) Tôi không có những nguyên tắc này theo chiều sâu và vì vậy tôi không biết tuyến đường nào phù hợp nhất với tôi mục đích và mục tiêu.
Cảm ơn câu trả lời của bạn. Tôi sẽ nhìn vào hướng đó. Tôi có một vấn đề với nhận xét 3d của bạn: Vì chúng tôi không chỉ đơn giản là mở một tập tin nhưng sử dụng giao dịch, chỉnh sửa các đối tượng vv ... Tôi có nên tạo một wrapper cho mỗi đối tượng Acad sau đó? – Bertvan
@Bertvan: Tìm câu trả lời cho câu hỏi này: Bạn chắc chắn rằng mã của bạn sẽ ngắt cho mỗi đối tượng ACad? Nếu bạn không chắc chắn, hãy viết một bài kiểm tra. Khi nó nhàm chán, dừng lại. Khi bạn tìm thấy các lỗi mới và trở nên không chắc chắn một lần nữa, hãy thêm các thử nghiệm khác. Bạn phải tìm * đường dẫn tốt nhất * của bạn. –