Есть ли хорошие инструменты или ресурсы TDD для VB6?
-
19-08-2019 - |
Вопрос
Да, я знаю, что сильно отстаю от времени, но у меня есть старинное приложение-редактор VB6, которое, я уверен, никто не будет обновлять до .NET в ближайшее время.Он использует несколько сторонних DLL-инструментов, и, поскольку он все еще использует старый добрый элемент управления RichEdit, я, по сути, могу создать свою собственную ферму ошибок только с помощью этого инструмента.
Итак, достаточно, и я пытаюсь понять, смогу ли я использовать TDD, чтобы начать писать модульные тесты для каждого поведения/функции, которые мне нужно исправить, чтобы рано или поздно у меня был полный набор регрессионных тестов для этого инструмента.И даже в будущем, если мы обновимся до .NET, я думаю, что большинство написанных мной тестов должны быть полезны для проверки правильного поведения, и я думаю, их также можно будет обновить до версии .NET.
Базовый поиск в Google отправил меня на вызов этого инструмента простоVBUnit, но я не могу найти достаточно руководств и т. д., чтобы начать, и да, я тоже не так хорошо разбираюсь в VB6 :(
- Итак, кто -нибудь знает какие -либо хорошие инструменты/ресурсы для меня, чтобы использовать TDD для этого приложения VB6?[На всякий случай желательно позже обновить до .NET.]
- Или я могу фактически использовать эти модульные тестовые платформы для .NET, т.е.NUNIT и т. Д. С помощью обходного пути?
- Или есть еще более удивительный способ сделать это?
Спасибо :)
РЕДАКТИРОВАТЬ:
Я пробовал возиться с vbunit, но обнаружил, что нет простого способа добавить его в существующее приложение или, по крайней мере, в мои знания.Таким образом, я тоже нашел, с чем можно поиграть, vb-lite-единица а также это сообщество.Плюс есть поговорка, которую мы можем использовать NUnit с vb6 но на это еще меньше ресурсов.
Решение
VBUnit у меня хорошо работал на бывшем клиенте в проекте VB6.
Другие советы
У меня был очень плавный опыт работы с TDD с использованием SimplyVBUnit. Я думал, что пример кода, с которым идет код, довольно понятен.
Ваша изначально загруженная форма при запуске содержит элемент управления. Затем в подпрограмме Form_Load вы:
AddTest New TestDifferentAsserts
TestDifferentAsserts является классом vb. Это выглядит примерно так:
Public Sub TestFloatCompareTolerance()
' we will use the default tolerance of 0.00001
Assert.AreEqual 9#, 9.000001, "Should be equal!"
' The Expected value must be a Double or Single
' for the tolerance to be used in the comparison.
Assert.AreEqual 9, 9.000001, "This will fail because we didn't use a float for the expected value."
End Sub
На самом деле завтра я перезагружаю vb6 на своем компьютере, чтобы взломать мой компьютер с помощью просто vbunit.
[ДОБАВЛЕННОЕ РЕДАКТИРОВАНИЕ]
Это мой проект Explorer в VB6:
Form1 - это место, где расположен элемент управления simplevbunit.
исходный код для этого проекта.
Если у вас есть сторонний контроль, кого это волнует? Оберните их фасадом. Затем создайте заглушку с фасада.
Если вам нужна дополнительная помощь, оставьте комментарий.
Я нахожусь в ситуации, когда у нас есть огромное приложение VB6, которое скоро будет перенесено на .NET.Перенесенная версия полностью протестирована.
Мы выбрали подход, заключающийся в модульном тестировании приложения VB6 из .NET через COM-взаимодействие.Основное преимущество, которое мы обнаружили на данный момент, заключается в том, что разработчики VB6 в конечном итоге изучают TDD (и все, что из него вытекает):
- Методология:сначала тест, потом код..
- Архитектура:SoC, связность, DRY, ...
- Технологии:фреймворки для тестирования и макетирования, контейнеры IoC...
Это решение значительно улучшает качество кода перенесенной версии, поскольку они понимают, как создавать архитектуру таким образом, чтобы упростить тестирование.Кроме того, существует потенциальная возможность использовать одни и те же тесты в версии VB6 и .NET.
Не уверен, что это решение слишком спроектировано для вашей проблемы.Вам следует оценить, применимо или нет это в вашей ситуации.
С уважением.