Модульное тестирование в MS Access

У меня есть проект базы данных Access, который становится немного большим, чтобы попытаться отслеживать в моей голове. Я знаю, что в игре немного поздно, но лучше поздно, чем никогда.

У меня есть Googled, но не нашел ничего для моего удовлетворения. Существует ли какая-либо такая вещь, как единая среда тестирования для MS VBA?

Ответы

Ответ 1

В SourceForge есть VBAUnit. Кроме того, коммерческий vbUnit 3 может поддерживать VBA, а также обычный VB... Я не уверен, однако.

Ответ 2

Я делаю довольно обширную разработку в Microsoft Access и нашел AccUnit для удовлетворения моих потребностей довольно мило. Сайт автора находится на немецком языке (но включает в себя некоторые переводы на английском языке), но как только вы получите основные понятия, он делает модульное тестирование очень простым в реализации.

AccUnit использует SimplyVBUnit 3.0 back end для тестирования модуля, но я нахожу, что надстройка AccUnit VBA проще реализовать в моих проектах.

Установка

Процесс установки описан на сайте автора, но по существу включает в себя следующие два элемента:

  • Установите SimplyVBUnit 3.0 (обратите внимание, что это больше не доступно для SourceForge, но копия доступна на сайте AccUnit.)
  • Установите надстройку AccUnit, загруженную по ссылке выше.

Основное использование

После установки вы найдете новое подменю в меню Tools. Нажмите AccUnitNew TestTest Class with AccUnit-Features, чтобы добавить новый модуль класса тестирования в ваш проект.

Add new unit test

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

Unit test class

Пример кода немного загадочен, но основная идея заключается в том, что при запуске тестов он будет последовательно запускать все 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. Затем появится тестовое окно и покажет результаты теста. (Он должен пройти, если вы скопировали в приведенном выше коде.): -)

enter image description here

Проектирование теста строк

Но то, что делает этот инструмент очень мощным, - это возможность запуска теста с использованием различных комбинаций критериев. В 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 еще раз, и вы увидите список результатов.

Row test example

Обратите внимание, что результаты отдельных тестов строк вложены в родительский тест, а дружественные имена, которые мы им предоставили, показаны для удобства.

Также обратите внимание, что один из этих тестов не прошел. (В этом случае это была преднамеренная ошибка в ожидаемом результате теста строки, просто чтобы продемонстрировать, как выглядит неудачный тест.) Двойной щелчок по неудачному тесту переходит к коду, в котором я могу отлаживать вещи дальше.

Резюме

Я только что рассказал несколько кратких примеров здесь, но есть ряд дополнительных инструментов и функций для изучения в AccUnit. (Тестируемые теги, флаг игнорирования, шаблоны кода и т.д.)

Надеемся, это даст вам немного отличия от этого конкретного параметра Unit Testing для Microsoft Access (или других продуктов VBA). Есть и другие хорошие варианты, но для меня это обеспечило гибкость и простоту, которые я искал.

Ответ 3

Лично я думаю, что с комбинацией превосходного доступа FE auto updater

http://autofeupdater.com/

И среда UAT, которая либо связана с данными в реальном времени, либо с данными тестирования, которые должны улавливать большинство проблем. Im также разработчик с единственным доступом, и моя модель состоит из

  • dev, где я вношу изменения

  • UAT land, где несколько избранных пользователей проверить изменения и одобрить

  • Живая земля, где живут все остальные

Ключевое различие, которое я вижу между проектами, - это способность людей делать UAT. У меня был один крупный релиз, который переносился с задней стороны доступа на SQL-сервер, я отправил электронное письмо, в котором говорилось, что версия была в UAT, готовая к тестированию, и получила назад через 30 минут, сказав, что все было протестировано (невозможно) низко и созерцать была ошибка в очень общей области.

Итак, в заключение, установите свою поэтапную среду и тщательно подберите ваши тестеры.

Ответ 4

Не то, что я знаю, но вы могли бы использовать проверку кода.