Мы разрабатываем приложения для использования в AutoCAD. В основном мы создаем проект библиотеки классов и загружаем .dll в autoCAD с помощью команды (NETLOAD).Рекомендации по тестированию модулей на API сторонних разработчиков (AutoCAD)
Как так, мы можем использовать команды «палитры», пользовательские элементы управления, формы и т.д. ...
AutoDesk предоставляет API через некоторые библиотеки DLL, работает в своей директории программы. Если вы ссылаетесь на эти dll, вы можете вызывать только DLL во время выполнения при загрузке приложения в AutoCAD (это лицензия на лицензирование от AutoDesk).
Для нас это не проблема, нам нужно визуально тестировать в контексте AutoCAD, поэтому мы просто устанавливаем свойства Debug, чтобы они запускали acad.exe и загружали нашу dll скриптом в acad.exe.
Проблема в том, что при попытке модульного тестирования нашего кода NUnit или mstest не работают из контекста AutoCAD, и они также не могут его запустить. Существует инструмент Gallio, который предоставил интерфейс с AutoCAD, чтобы он мог запускать Unit test через IPC с помощью Named Pipes.
Однако это решение для меня слишком много хлопот. Я хочу иметь возможность быстро писать тесты без необходимости покидать мою любимую среду IDE.
Итак, что, с точки зрения «хорошего дизайна», было бы хорошим подходом к этой проблеме? Я думаю, что мне в основном нужна тестовая кодовая база, которая не ссылается на DLL AutoCAD и не проверяемую, которая ссылается на непроверяемые DLL-файлы AutoCAD.
Я уверен, что есть способы заставить это работать: (IOC, DI, Pattern адаптера.) Я просто не понимаю этих принципов в глубине, и поэтому я не знаю, какой маршрут лучше всего подходит для моего целях и целях.
Спасибо за ваш ответ. Я посмотрю в этом направлении. У меня есть проблема с вашим трехмерным замечанием: поскольку мы не просто открываем файл, но используем транзакции, редактируем объекты и т. Д. Должен ли я создавать оболочку для каждого объекта Acad? – Bertvan
@Bertvan: Найдите ответ на этот вопрос: Как вы уверены, что ваш код будет разбит на каждый объект ACAD? Если вы не уверены, напишите тест. Когда становится скучно, остановитесь. Когда вы обнаружите новые ошибки и снова не уверены, добавьте больше тестов. Вы должны найти * ваш * лучший путь. –