Ответ 1
В SourceForge есть VBAUnit. Кроме того, коммерческий vbUnit 3 может поддерживать VBA, а также обычный VB... Я не уверен, однако.
У меня есть проект базы данных Access, который становится немного большим, чтобы попытаться отслеживать в моей голове. Я знаю, что в игре немного поздно, но лучше поздно, чем никогда.
У меня есть Googled, но не нашел ничего для моего удовлетворения. Существует ли какая-либо такая вещь, как единая среда тестирования для MS VBA?
В SourceForge есть VBAUnit. Кроме того, коммерческий vbUnit 3 может поддерживать VBA, а также обычный VB... Я не уверен, однако.
Я делаю довольно обширную разработку в Microsoft Access и нашел AccUnit для удовлетворения моих потребностей довольно мило. Сайт автора находится на немецком языке (но включает в себя некоторые переводы на английском языке), но как только вы получите основные понятия, он делает модульное тестирование очень простым в реализации.
AccUnit использует SimplyVBUnit 3.0 back end для тестирования модуля, но я нахожу, что надстройка AccUnit VBA проще реализовать в моих проектах.
Процесс установки описан на сайте автора, но по существу включает в себя следующие два элемента:
После установки вы найдете новое подменю в меню Tools
. Нажмите AccUnit
→ New Test
→ Test Class with AccUnit-Features
, чтобы добавить новый модуль класса тестирования в ваш проект.
Вы можете назвать модуль всем, что хотите, поэтому это будет зависеть от того, как вы хотите провести тестирование. Некоторые люди предпочитают тестовый класс для каждого модуля, чтобы все было организовано, а другие упрощали работу в небольших проектах, используя один класс для модульных тестов.
Пример кода немного загадочен, но основная идея заключается в том, что при запуске тестов он будет последовательно запускать все Subs в классе и отображать результаты теста. Проделайте пару пробных тестов.
Скажем, у нас есть функция (в стандартном модуле), которая выглядит так:
Public Function GetLowestNumber(FirstNum As Double, SecondNum As Double) As Double
If FirstNum < SecondNum Then
GetLowestNumber = FirstNum
Else
GetLowestNumber = SecondNum
End If
End Function
Вернемся в класс теста AccUnit, теперь мы можем сделать простой тест, чтобы убедиться, что эта функция действительно возвращает самое низкое число.
Public Sub basUtility_GetLowestNumber_Test1()
Assert.That GetLowestNumber(3, 4), Iz.EqualTo(3)
End Sub
Теперь, на панели инструментов AccUnit, нажмите кнопку Run all tests
. Затем появится тестовое окно и покажет результаты теста. (Он должен пройти, если вы скопировали в приведенном выше коде.): -)
Но то, что делает этот инструмент очень мощным, - это возможность запуска теста с использованием различных комбинаций критериев. В AccUnit они называют это Row Test. Чтобы использовать его, просто настройте функцию для приема параметров и перечислите свои тестовые примеры в строках комментариев над функцией.
' AccUnit:Row(3,4,3).Name = "Smaller first"
' AccUnit:Row(4,3,3).Name = "Larger first"
' AccUnit:Row(3,3,3).Name = "Equal"
' AccUnit:Row(3.002,3.6,3.003).Name = "Decimals"
' AccUnit:Row(-3,3,-3).Name = "Mixed sign"
' AccUnit:Row(-7,-3,-7).Name = "Negative"
Public Sub basUtility_GetLowestNumber_RowTest(Num1 As Double, Num2 As Double, Expected As Double)
Assert.That GetLowestNumber(Num1, Num2), Iz.EqualTo(Expected)
End Sub
Теперь нажмите Run all tests
еще раз, и вы увидите список результатов.
Обратите внимание, что результаты отдельных тестов строк вложены в родительский тест, а дружественные имена, которые мы им предоставили, показаны для удобства.
Также обратите внимание, что один из этих тестов не прошел. (В этом случае это была преднамеренная ошибка в ожидаемом результате теста строки, просто чтобы продемонстрировать, как выглядит неудачный тест.) Двойной щелчок по неудачному тесту переходит к коду, в котором я могу отлаживать вещи дальше.
Я только что рассказал несколько кратких примеров здесь, но есть ряд дополнительных инструментов и функций для изучения в AccUnit. (Тестируемые теги, флаг игнорирования, шаблоны кода и т.д.)
Надеемся, это даст вам немного отличия от этого конкретного параметра Unit Testing для Microsoft Access (или других продуктов VBA). Есть и другие хорошие варианты, но для меня это обеспечило гибкость и простоту, которые я искал.
Лично я думаю, что с комбинацией превосходного доступа FE auto updater
И среда UAT, которая либо связана с данными в реальном времени, либо с данными тестирования, которые должны улавливать большинство проблем. Im также разработчик с единственным доступом, и моя модель состоит из
dev, где я вношу изменения
UAT land, где несколько избранных пользователей проверить изменения и одобрить
Живая земля, где живут все остальные
Ключевое различие, которое я вижу между проектами, - это способность людей делать UAT. У меня был один крупный релиз, который переносился с задней стороны доступа на SQL-сервер, я отправил электронное письмо, в котором говорилось, что версия была в UAT, готовая к тестированию, и получила назад через 30 минут, сказав, что все было протестировано (невозможно) низко и созерцать была ошибка в очень общей области.
Итак, в заключение, установите свою поэтапную среду и тщательно подберите ваши тестеры.
Не то, что я знаю, но вы могли бы использовать проверку кода.