Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Yusuf от 12-11-2020, 17:14:42

Название: Ускорение тестирования разработок
Отправлено: Yusuf от 12-11-2020, 17:14:42
Здравствуйте, уважаемые наставники не нашел такой темы и решил спросить, поделитесь опытом как ускорить проверку написанного кода. Например при любом исправлении как известно приходится перезагружать autocad.
Я что не касается autocad api сначала делаю в консоли и проверяю, например существует ли этот файл на сервере, если работает нормально, потом копирую в библиотеку, ладно это не так уж времени занимает, (хотя этот процесс тоже хотелось бы оптимизировать), но когда обращение к api даже для проверки одной переменной приходится перезагружаться, есть способ как это ускорить?
Думал делать так, если нет обращения к api, делать в консоли, проверять и потом  менять консольное приложение на библиотеку и добавлять как ссылку в библиотеку для autocad. Подскажите оптимальное решение как Вы делаете?
Не придумали еще ничего для autocad такое как был в revit addin который ссылается на dll?
Название: Re: Ускорение тестирования разработок
Отправлено: Дмитрий Загорулькин от 12-11-2020, 17:29:10
если нет обращения к api
Если нет обращений к API AutoCAD, то смотрите, что такое Unit-тестирование.
Если есть обращения к API AutoCAD, то всё равно смотрите Unit-тестирование и придумывайте как его использовать в связке с AcCoreConsole.exe. Об этом еще лет 5 тому назад Бушман Андрей писал, можно попробовать найти.
Это будет самый надёжный и быстрый способ тестирования, однако, требует определённых затрат по времени на написание тестов. Но, есть резонное мнение, что эти затраты окупятся в будущем, позволяя избежать ошибок при дальнейшей разработке.
Есть даже технология (https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) написания наиболее отказоустойчивого кода, когда сперва пишутся Unit-тесты, а затем уже основной код.
Название: Re: Ускорение тестирования разработок
Отправлено: Привалов Дмитрий от 12-11-2020, 19:40:51
поделитесь опытом как ускорить проверку написанного кода. Например при любом исправлении как известно приходится перезагружать autocad.
Я лишь перефразирую и немного уточню, что сказал Дмитрий.
1. Если для тестов требуется тестовый DWG файл. Подготовь его. Оставь только то, что надо, подлечи и вычисти. Если потребуется много раз подгружать файл, это сэкономит тебе время.
2. Если тестируешь обращение к БД, то постарайся использовать AcCoreConsole.exe, т.к. самый быстрый способ загрузить AutoCAD, тестируемую dll, файл.
3. Разбивай программу на модули, это основа тестирования.
4. Если модуль можно протестировать без запуска автокада, тестируй без автокада.
5. Готовые и протестированные  модули отключай на время. Например если запрашиваешь папку, и это работает, закомментируй код и передавай путь к папке, чтобы не тратить время повторяя одно и то же при тестах.
6. Чем больше проект, количество модулей, дольше разработка тем актуальнее Unit-тестирование, TDD и т.д.
Название: Re: Ускорение тестирования разработок
Отправлено: Lemieux от 12-11-2020, 20:08:45
Здравствуйте, уважаемые наставники не нашел такой темы и решил спросить, поделитесь опытом как ускорить проверку написанного кода. Например при любом исправлении как известно приходится перезагружать autocad.
Я что не касается autocad api сначала делаю в консоли и проверяю, например существует ли этот файл на сервере, если работает нормально, потом копирую в библиотеку, ладно это не так уж времени занимает, (хотя этот процесс тоже хотелось бы оптимизировать), но когда обращение к api даже для проверки одной переменной приходится перезагружаться, есть способ как это ускорить?
Думал делать так, если нет обращения к api, делать в консоли, проверять и потом  менять консольное приложение на библиотеку и добавлять как ссылку в библиотеку для autocad. Подскажите оптимальное решение как Вы делаете?
Не придумали еще ничего для autocad такое как был в revit addin который ссылается на dll?
Я не перезагружаю. Иногда VS требует перезагрузки, когда есть лямбда выражения. А так отладка отлично работает.
Название: Re: Ускорение тестирования разработок
Отправлено: Yusuf от 12-11-2020, 20:39:21
Я не перезагружаю. Иногда VS требует перезагрузки, когда есть лямбда выражения. А так отладка отлично работает.
библиотека же не соберется если используется в автокаде
Спасибо всем за советы!
Название: Re: Ускорение тестирования разработок
Отправлено: Вильдар от 12-11-2020, 20:57:34
Например при любом исправлении как известно приходится перезагружать autocad.
да, перегружаю автокад. но не после написания каждой строки конечно. неприятно да. особенно лисперы с ужасом к этому относятся)
есть лисапед мой, а-ля аддин менеджер как в ревите )
https://github.com/vildar82/AcadAddinManager
бери дарю)
Название: Re: Ускорение тестирования разработок
Отправлено: Lemieux от 12-11-2020, 21:37:18
Я не перезагружаю. Иногда VS требует перезагрузки, когда есть лямбда выражения. А так отладка отлично работает.
библиотека же не соберется если используется в автокаде
Спасибо всем за советы!
Я не знаю в чём у тебя проблема, у меня VS работает в режиме "Debug"  и в режиме отладки я могу всё смотреть по коду. А если надо поправить код, то ставлю на паузу, правлю код, жму F5 и дальше тестить. AutoCAD иногда даже прощает ошибки и не вылетает с критом.
Название: Re: Ускорение тестирования разработок
Отправлено: Дмитрий Загорулькин от 12-11-2020, 21:57:22
А если надо поправить код, то ставлю на паузу, правлю код, жму F5 и дальше тестить. AutoCAD иногда даже прощает ошибки и не вылетает с критом.
Что-то не верится, что AutoCAD поддерживает Edit and Continue. Скорее всего, есть какой-то подвох. Запишите видео - иначе не поверю )
Название: Re: Ускорение тестирования разработок
Отправлено: Дмитрий Загорулькин от 12-11-2020, 22:01:58
5. Готовые и протестированные  модули отключай на время. Например если запрашиваешь папку, и это работает, закомментируй код и передавай путь к папке, чтобы не тратить время повторяя одно и то же при тестах.
Вот этой идеи не понял - зачем? В TestExplorer можно просто не выполнять тест отдельного модуля. Зачем комментировать?
Название: Re: Ускорение тестирования разработок
Отправлено: Вильдар от 12-11-2020, 22:02:16
Дмитрий Загорулькин,
раньше, в студии пользовалься этим. но там действительно с ограничениями, типа присвоение константной переменной можно поменять вроде было. а прям что-то переписать, поправить вроде нет.
еще удобно было wpf разметку менять и окно перестраивалось на лету.
жалко, этого пока нет в райдере.
Название: Re: Ускорение тестирования разработок
Отправлено: Дмитрий Загорулькин от 12-11-2020, 22:07:26
еще удобно было wpf разметку менять и окно перестраивалось на лету.
жалко, этого пока нет в райдере.
Off-Topic: показать
В райдере WPF разрабатывать-править - это боль  :) Я для этого только студию использую. Настроил её максимально "под райдер": Solution Explorer слева, шрифт JetBrains Mono, подключил решарпер - и почти норм  ;D
Название: Re: Ускорение тестирования разработок
Отправлено: Yusuf от 13-11-2020, 07:09:53
Я не знаю в чём у тебя проблема, у меня VS работает в режиме "Debug"  и в режиме отладки я могу всё смотреть по коду. А если надо поправить код, то ставлю на паузу, правлю код, жму F5 и дальше тестить. AutoCAD иногда даже прощает ошибки и не вылетает с критом.
Воот я дурак, столько мучался, не знал, почему раньше не спросил, реально получается делать изменения. Иногда думаешь зачем такую глупость спрашивать оказывается надо )).
да, перегружаю автокад. но не после написания каждой строки конечно. неприятно да. особенно лисперы с ужасом к этому относятся)
есть лисапед мой, а-ля аддин менеджер как в ревите )
https://github.com/vildar82/AcadAddinManager
бери дарю)
спасибо хороший лисапед.
Название: Re: Ускорение тестирования разработок
Отправлено: trir от 13-11-2020, 08:41:08
Цитировать
Вот этой идеи не понял - зачем? В TestExplorer можно просто не выполнять тест отдельного модуля. Зачем комментировать?
когда в AutoCAD тестируешь какое то сложное поведение, то можно отключить диалоги с пользователем и вставить константы
Название: Re: Ускорение тестирования разработок
Отправлено: Дмитрий Загорулькин от 13-11-2020, 11:32:35
типа присвоение константной переменной можно поменять вроде было
Я для этого использую переменные автокада USERR1-5, USERI1-5 и USERS1-5.
Название: Re: Ускорение тестирования разработок
Отправлено: Александр Ривилис от 13-11-2020, 12:22:53
А если надо поправить код, то ставлю на паузу, правлю код, жму F5 и дальше тестить. AutoCAD иногда даже прощает ошибки и не вылетает с критом.
Что-то не верится, что AutoCAD поддерживает Edit and Continue. Скорее всего, есть какой-то подвох. Запишите видео - иначе не поверю )
В каких-то версиях AutoCAD, Visual Studio и при каких-то удачных обстоятельствах это работает. У меня пару раз получалось, но я бы не рисковал. Само-собой в native и mixed C++ такой вариант не проходит вообще.
Название: Re: Ускорение тестирования разработок
Отправлено: Lemieux от 13-11-2020, 14:00:14
Что-то не верится, что AutoCAD поддерживает Edit and Continue. Скорее всего, есть какой-то подвох. Запишите видео - иначе не поверю )
Воот я дурак, столько мучался, не знал, почему раньше не спросил, реально получается делать изменения.
Вот человек подтвердил. У меня всё это работало с VS 2015, 2017, и работает в 2019 с AutoCAD 2018, 2020. Я выше написал в каких случаях VS не давал править строки.

У меня пару раз получалось, но я бы не рисковал.
А в чём состоит риск?
Название: Re: Ускорение тестирования разработок
Отправлено: Александр Ривилис от 13-11-2020, 14:36:08
А в чём состоит риск?
В том, что результат непредсказуем. Особенно если используются события и P/Invoke