Можно ли запустить
тесты черного ящика из юнит-теста
рамки?
Да, вы можете вызвать автотест с помощью system()
из модульных тестов, а затем подтвердить возвращаемое значение.
Но я бы не рекомендовал делать это, поскольку модульные тесты выполняются очень часто, они должны быть очень быстрыми, то есть измеряться в секундах, а не в минутах.
Модульные тесты и интеграционные тесты (которые вы называете тестами черного ящика) служат разным целям: модульные тесты подтверждают, что блоки в коде (независимо от того, что это означает, функция или кластеры функций) работают так, как ожидается тесты, в то время как интеграционные тесты охватывают программу целиком, проверяя ее в целом.
Таким образом, как правило, модульные тесты запускаются после каждых нескольких изменений в коде, особенно если вы применяете TDD, тогда как интеграционные тесты выполняются, когда добавляется возможность.
Я бы предпочел иметь типовые программы модульных тестов с утверждениями и набор интеграций, который бы вызывал модульные тесты в дополнение к вашим тестам черного ящика.
Проблема в том, что я не уверен, какую границу использовать между утверждениями и
вывод возвращаемого значения функции (для целей регистрации, так как
Мне нравится, как Autotest даст мне разницу).
С утверждениями выводить нечего: либо ожидаемые и фактические значения равны и ничего не происходит, либо они различаются, и структура UT выводит сообщение об ошибке (ожидаемое значение X, фактическое значение Y). Это то, что позволяет компьютеру выполнять работу по тестированию.
При регистрации выходных различий необходимо вручную (визуально) проверить результаты различий (например: отсутствует ли один элемент в списке или один дополнительный элемент ...).
Поскольку большинство функций возвращают списки, быстрее подготовиться с использованием diff
с ожидаемым выводом (экспот с использованием автотеста).
Возможно, вы захотите написать функцию, которая сравнивает списки, используя утверждения.