2016-11-29 10 views
0

Я начинаю с модульного тестирования, чтобы лучше управлять этим кодом Legacy в VB6, над которым я работаю. Я начал с тестового теста C# на небольшом демонстрационном приложении, чтобы узнать его, а затем начал играть с SimplyVBUnit (с которым я все еще не владею).Как тестировать код VB6 в .NET.

Что я сразу заметил, так это то, что если модуль создания тестирует в VB6, а затем перенесет мой код, мне придется воссоздать \ мигрировать код моих тестов на стороне .NET. Я попытался решить эту проблему путем поиска способа сделать это через COM Interop, чтобы узнать, могу ли я показать свои методы VB6 в проекте модульных тестов в .NET, но не смог найти хороший источник информации.

Тогда я хочу спросить, является ли этот подход жизнеспособным? И если да, каковы шаги для этого?

UPDATE I: Частичный успех

После поиска вокруг я обнаружил, что я мог бы создать DLL ActiveX в VB6, чтобы передать класс. Для того чтобы проверить это, я создал новый VB6 проект с шаблоном ActiveX Dll под названием «MyTestProject» и в нем создали класс под названием CalculatorLib со следующим кодом:

Public Function Addition(ByVal operand1 As Long, ByVal operand2 As Long) As Long 
    Addition = (operand1 + operand2) 
End Function 

Public Function Subtract(ByVal operand1 As Long, ByVal operand2 As Long) As Long 
    Subtract = (operand1 - operand2) 
End Function 

Public Function Divide(ByVal operand1 As Long, ByVal operand2 As Long) As Long 
    Divide = (operand1 + operand2) 
End Function 

Затем создать DLL нажатием сделать в разделе Файл - > Make MyTestProject.dll

В Visual Studio 2015 создайте новый проект тестирования модулей. Для этого существует соглашение об именах, но для этого теста я не учитывал это.

Выберите проект в проводнике решений и щелкните правой кнопкой мыши и выберите Добавить, а затем ссылку. На вкладке COM найдите свою DLL и добавьте ее в проект. В тесте я создал (быстрый и грязный) метод испытания под названием TestAdd:

[TestMethod] 
    public void TestAdd() 
    { 
     MyTestProject.CalculatorLib calculator = new MyTestProject.CalculatorLib(); 
     int io = calculator.Addition(10, 30); 
     Assert.AreEqual(io, 20); 
    } 

Этот тест терпит неудачу, как и ожидалось, и Changin 30 к 10 делает тест проход. РАДОСТЬ!

Итак, теперь я могу это сделать, как проверить функции и подпрограммы, которые находятся в моих модулях и формах, без необходимости их преобразования в классы в DLL ActiveX?

ответ

0

Есть действительно только два варианта:

  1. переписывают модульные тесты в C#.
  2. Выставлять свои тесты модуля VB6 как функции DLL ActiveX.

В любом случае вам понадобится написать код формы C#. Если модульные тесты в VB6 все еще используются, я рекомендую вам использовать второй вариант, поэтому вам не придется беспокоиться о поддержании двух наборов исходного кода.

Где я работаю, у нас есть все модульные тесты на C#, потому что мы хотим как можно больше дистанцироваться от устаревшего продукта.

+0

Спасибо за ответ @vbguyny. Я думаю, что тестирование на C# - это путь. В настоящее время мы не проводим модульные тесты. Это то, что я пытаюсь представить в проекте. Я читаю как «Искусство модульного тестирования: с примерами в C#» и «Эффективно работаю с устаревшим кодом», так как я довольно новичок в этих предметах. Таким образом, любые примеры или источники информации, которые вы могли бы предоставить, были бы весьма признательны. – BMFS