Есть ли хорошие инструменты или ресурсы TDD для VB6? - PullRequest
12 голосов
/ 22 января 2009

Да, я знаю, что я сильно отстал, но у меня есть антикварное приложение-редактор VB6, которое, я считаю, скоро никто не обновит до .NET. Он использует несколько сторонних DLL-инструментов и, поскольку он все еще использует старый добрый элемент управления RichEdit, я в принципе могу создать свою собственную ферму ошибок, используя только этот инструмент.

Этого достаточно, и я пытаюсь выяснить, могу ли я использовать TDD, чтобы я мог начать писать модульный тест для каждого поведения / функции, которые мне нужно исправить, поэтому рано или поздно я смогу получить полный набор регрессионных тестов для этот инструмент. И даже в будущем, если мы сделаем обновление до .NET, я думаю, что большинство написанных мною тестов должны быть полезны для проверки правильности поведения и, вероятно, должны быть обновлены до версии .NET.

Некоторые базовые Google отправляют меня на этот инструментальный вызов simplyVBunit , но я не могу найти достаточно руководств и т. Д., Чтобы начать, и да, я не настолько опытен с VB6: (

  1. Так кто-нибудь знает что-нибудь хорошее? инструменты / ресурсы для меня, чтобы использовать TDD для этого приложения VB6? [Желательно обновить на .NET позже на всякий случай.]
  2. Или я действительно могу использовать эти единицы тестовый фреймворк для .NET, т.е. NUnit, и т.д. через обходной путь?
  3. Или есть еще более удивительный способ сделать это?

Спасибо:)

EDIT:

Я пытался связываться с vbunit, но обнаружил, что нет простого способа добавить его в существующее приложение или, по крайней мере, не знаю, как это сделать. Таким образом, я обнаружил, что с этим можно играть, vb-lite-unit , а также с comunit . Кроме того, некоторые говорят, что мы можем использовать NUnit с vb6 , но ресурсов на это еще меньше.

Ответы [ 3 ]

10 голосов
/ 22 января 2009

У меня был очень плавный опыт работы с 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:

project explorer

Form1 is where the simplyvbunit control is located.

The исходный код для этого проекта.

Если у вас есть сторонний контроль, кого это волнует? Оберните их фасадом. Затем создайте заглушку с фасада.

Если вам нужна дополнительная помощь, оставьте комментарий.

6 голосов
/ 22 января 2009

Я нахожусь в ситуации, когда у нас есть огромное приложение VB6, которое находится на пути к миграции на .NET. Мигрированная версия полностью протестирована.

Подход, который мы выбрали, заключается в модульном тестировании приложения VB6 из .NET через COM-взаимодействие. Основное преимущество, которое мы обнаружили на данный момент, заключается в том, что разработчики VB6 в конечном итоге изучают TDD (и все, что оно подразумевает):

  • Методология: сначала проверь, потом код ..
  • Архитектура: SoC, сплоченность, СУХОЙ, ...
  • Технология: тестирование и макеты, IoC-контейнеры ...

Это решение значительно улучшает качество кода перенесенной версии, поскольку они понимают, как сконструировать объекты таким образом, чтобы упростить тестирование. Кроме того, существует потенциальная возможность использовать одни и те же тесты на VB6 и версии .NET.

Не уверен, что это решение чрезмерно разработано для вашей проблемы. Вы должны оценить, применимо или нет в вашей ситуации.

Привет.

6 голосов
/ 22 января 2009

VBUnit хорошо работал для меня на бывшем клиенте проекта VB6.

...