Как делают Вас Модульный тест.EXE с третьей стороной dll?

Вы можете сделать:

from operator import itemgetter

res = [{"operation": 1, "path": 2}, {"operation": 1, "path": 1}]

res = sorted(res, key=itemgetter("operation", "path"))

print(res)

Вывод

[{'operation': 1, 'path': 1}, {'operation': 1, 'path': 2}]
6
задан Community 23 May 2017 в 12:22
поделиться

6 ответов

Существует различие между модульными тестами и интеграционными тестами. Вы не делаете теста единицы исполняемый файл. Вы модульный тест маленькие, автономные устройства вычисления, как метод или процедура, в зависимости от того, какой язык Вы используете. Интеграционный тест протестировал бы большие компоненты, как API, сторонние компоненты или даже исполняемые файлы, чтобы удостовериться, что они работают как ожидалось на данный набор исходных данных (хороший или плохой). В то время как можно сделать некоторое интеграционное тестирование API или сменных компонентов с инструментами поблочного тестирования, я не думаю, что Вы найдете много инструментов поблочного тестирования, которые работают для тестирования исполняемых файлов. Существуют другие типы инструментов тестирования, которые сделают лучшее задание в этом. Просто запись сценариев, которые обеспечивают различные типы исходных данных и проверяют их выводы, может быть достаточной для многих сценариев.

Если Вы хотите узнать больше о TDD и поблочном тестировании, необходимо применить его к функциям или процедурам в VB6 - хотя, я рекомендовал бы VB.NET (или C#) и выполнение объектно-ориентированной разработки. Обычно инструменты ориентированы к программированию стиля OO.

6
ответ дан 9 December 2019 в 22:41
поделиться

Элементы управления ActiveX в VB являются средствами сохранения прекрасного времени однако, они - отрава эффективной разработки через тестирование.

Для эффективного тестирования всего приложения VB6 идеально, у Вас должен быть дизайн, где EXE является тонкой оболочкой по DLL ActiveX, который делает всю работу. Формы реализуют интерфейс и регистрируют себя в DLL. Таким образом, если у Вас будет Форма ввода Порядка, то она реализует тот интерфейс IOrderEntryForm, и это - события, назовет методы на Классе OrderEntry расположенными в диалоговом окне MyAppUI.

Для подчеркивания в Visual Basic 6 ФОРМЫ могут РЕАЛИЗОВАТЬ интерфейс. Форма затем регистрирует себя в Классе UI в, он - событие LOAD. События формы (как MyButton_Click) называют методы на Классе UI. Класс UI с помощью методов Интерфейса Формы для изменения, что отображено. Это - дополнительная работа, но это экономит много времени для тестирования. Также обслуживание, поскольку можно изменить то, на что форма похожа как долго реализованный интерфейс, остается тем же.

Это также означает, что, прежде чем у Вас будет что-то как MYEXE->, MyActiveXDLL превратится в MYEXE-> MyUIDLL-> MyActiveXDLL.

Для Вашей тестовой среды Вы создаете DLL ActiveX, который копирует UI путем создания классов, которые реализуют различный интерфейс формы. DLL UI не знает различия, и Вы имеете полный контроль над тем, какие исходные данные отправляются и что Вы читаете.

Обратите внимание, что об этом типе шаблона разработки говорят здесь. Я использовал его в качестве основания для разработки и поддержания приложения CAD/CAM моей компании для машин резки металла.

Сторонние элементы управления ActiveX являются отравой этой схемы. Это вызвано тем, что код, делающий тяжелый подъем, в самом управлении. Чем более сложный элемент управления ActiveX, тем хуже проблема. Тенденция в моей компании для сокращения нашей зависимости от сторонних средств управления в пользу внутренних приложений.

Однако как любой алгоритм и шаблон разработки это включает личный выбор. Сколько делают проблемы Вы входите в области своего программного обеспечения, включающего управление обогащенным текстом. Если не многие затем можно, вероятно, сойти с рук сценарий тестирования или руководство или автоматизированный (т.е. отправляющий нажатия клавиш в приложение) и использовать платформу модульного теста для остальных.

Критический элемент использования Поблочного тестирования, Ваше Целое приложение должно наполнить такое количество его, как Вы можете позади интерфейсов. Просто сделайте то, что Вы можете на данный момент и делать примечанием областей, которые Вы хотите изменить для того, когда Вы делаете будущую разработку. Не отчаивайтесь, если у Вас нет 100%-го покрытия сразу же или даже в течение следующего года.

4
ответ дан 9 December 2019 в 22:41
поделиться

Конечно, Вы можете единица тестировать отдельный EXE. Посмотрите на то, сколько приложений состоит из нескольких EXEs.

Что касается сторонних компонентов, как Вы обращаетесь к тестированию со стандартными компонентами VB6? Другие компоненты MS? То же самое со сторонним компонентом.

0
ответ дан 9 December 2019 в 22:41
поделиться

О единственном полезном совете я смог давать, должен забрать Michael Feathers Working Effectively с Унаследованным кодом. Я думаю, что Ваша самая сложная задача будет Вашим набором инструментов, поскольку я знаю, что инструменты для поблочного тестирования VB6 просто не так сильны.

Вы могли также попытаться спросить относительно Списка Yahoo! TDD, поскольку я знаю, что по крайней мере несколько человек используют vbunit3 на там.

0
ответ дан 9 December 2019 в 22:41
поделиться

Другая техника для использования состоит в том, чтобы сделать Вас приложением EXE ActiveX. Ваше приложение модульного теста может затем сослаться на Ваше приложение, как будто это был DLL ActiveX. Необходимо будет провести довольно мало исследования, чтобы заставить это работать правильно, как это некоторое время, так как я в последний раз работал с VB6, и я уверен, что было несколько приемов для получения его работа.

1
ответ дан 9 December 2019 в 22:41
поделиться

И сделать вещи более сложными существует множество суетящихся глобальных переменных.

Первый рефакторинг является передачей глобальные переменные к классу в DLL ActiveX. Свойство инстанцирования того класса должно быть установлено на ГЛОБАЛЬНОЕ МУЛЬТИИСПОЛЬЗОВАНИЕ. Когда установлено EXE для ссылки на ActiveX, которым переменные будут все еще быть глобальными однако Вы при срывании EXE для замены его тестовой обвязкой, ремень безопасности, может получить доступ к глобальным переменным.

После того как у Вас есть тесты, идущие Вас, может сделать дальнейший рефакторинг для сокращения количества глобальных переменных.

0
ответ дан 9 December 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: