Есть ли какие-либо хорошие инструменты TDD или ресурсы для VB6?

template 
class IntermittentQueue : Queue { /* some other statements */ };

Это определяет новый класс шаблона:

template 
class IntermittentQueue { }

, который в то же время наследует от другого, такого как:

class Base { };
class Derived : Base { };

Исключительно, что в этом случае базовый класс является экземпляром другого шаблонного класса:

template 
class Base { };
class Derived : Base { };

с использованием параметра шаблона производного класса в качестве аргумента шаблона (и теперь мы снова вернулись к исходному коду ...).

template 
typename IntermittentQueue::Node* IntermittentQueue::getNode(const node_ptr nodePtr)
{ /* some other statements */ };

Это реализация одной из функций-членов шаблонного класса. Шаг за шагом:

template  // the class we are speaking off is a template class

typename IntermittentQueue::Node* // return value of the function

IntermittentQueue::getNode // function name with (template) class scope specified
                              // (just as with SomeClass::someMemberFunction)

 (const node_ptr nodePtr)         // function parameter(list)
 { /* some other statements */ }; // function body

Хорошо, но тип возвращаемого значения может нуждаться в дополнительном объяснении:

typename IntermittentQueue::Node*

Функция возвращает указатель на объект типа внутреннего класса Node of (template) class IntermittentQueue:

IntermittentQueue::Node*

Поскольку внутренний тип является зависимым типом, вам необходимо явно указать компилятору, что это на самом деле является a вообще введите, для этого используется ключевое слово typename; для деталей: есть уже другой вопрос к теме.

Здесь просто примечание: наличие typedef для указателей (node_ptr) является плохой практикой , это просто скрытие информации и не служит чему-то ценному (исключение: указатель служит дескриптором к какому-либо внутреннему ресурсу, и он не предназначен для разыменования где-либо за пределами - тогда допустимо явное скрытие природы указателя).

12
задан Paddyslacker 13 August 2010 в 18:34
поделиться

3 ответа

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

6
ответ дан 2 December 2019 в 07:04
поделиться

У меня был очень гладкий опыт TDD с помощью SimplyVBUnit. Я думал образец, с которым идет код, было довольно очевидно.

Ваша первоначально загруженная форма при запуске содержит управление. Затем в Form_Load sub Вы:

 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 на своем компьютере для бездельничания на моем компьютере с simplyvbunit.

[ДОБАВЛЕННОЕ РЕДАКТИРОВАНИЕ]

Это - мой Проводник проекта в VB6:

project explorer

Form1 - то, где управление simplyvbunit расположено.

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

Если у Вас есть сторонние средства управления, кто заботится. Перенесите их с фасадом. Затем создайте тупик из фасада.

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

10
ответ дан 2 December 2019 в 07:04
поделиться

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

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

  • Методология: протестируйте сначала, кодируйте впоследствии..
  • Архитектура: SoC, сцепление, DRY...
  • Технология: тестируя и платформы насмешки, контейнеры МОК...

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

Не уверенный, если этим решением является over-architectured для Вашей проблемы. Необходимо оценить, применимо ли или подходит в ситуации.

С уважением.

6
ответ дан 2 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

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