В этом примере показано, как протестировать функцию, которую вы создаете путем записи live скрипта, 'TestRightTriLiveScriptExample.mlx'
Функция, взятая в качестве примера, вычисляет углы прямоугольного треугольника, и вы создадите модульный тест на основе live-скриптов, чтобы протестировать эту функцию.
Тест, созданный на основе live-скрипта, должен соответствовать следующим соглашениям:
Имя файла live скрипта должно запустить или закончить словом 'test'
, который является нечувствительным к регистру.
Поместите каждый модульный тест в отдельный участок файла live скрипта. Заголовок каждого раздела становится именем тестового элемента. Если раздел не имеет никакого заголовка, MATLAB присваивает имя к тесту.
Допустим, ваш тест запускается на основе live-скриптов. Если при запуске теста с помощью кнопки Run из Live Editor MATLAB встречается с непройденным тестом, то это останавливает выполнение скрипта и не запускает остающихся тестов. Если при запуске live скрипт с помощью среды модульного тестирования, такой как с runtests
функция, затем если MATLAB сталкивается с непройденным тестом, это все еще, запускает остающиеся тесты.
Когда live скрипт запускается как тест, переменные, заданные в одном тесте, не доступны в других тестах. Точно так же переменные, заданные в других рабочих областях, не доступны для тестов.
За пределами этого примера, в вашей текущей папке MATLAB, создают функцию в файле, rightTri.m
. Эта функция берет длины двух сторон треугольника, как введено и возвращает три угла соответствующего прямоугольного треугольника. Входные стороны являются двумя более короткими ребрами треугольника, не гипотенузой.
type rightTri.m
function angles = rightTri(sides) A = atand(sides(1)/sides(2)); B = atand(sides(2)/sides(1)); hypotenuse = sides(1)/sind(A); C = asind(hypotenuse*sind(A)/sides(1)); angles = [A B C]; end
Можно включать уравнения и изображения в live скрипте, чтобы помочь задокументировать тест. Создайте следующий тест для малого углового приближения. Как правило, когда вы сравниваете значения с плавающей точкой, вы задаете допуск к сравнению.
rightTri
функция должна возвращаемые значения, сопоставимые с малым угловым приближением, таким что .
angles = rightTri([1 1500]); smallAngleInRadians = (pi/180)*angles(1); % convert to radians approx = sin(smallAngleInRadians); assert(abs(approx-smallAngleInRadians) <= 1e-10, 'Problem with small angle approximation')
У вас могут быть несколько assert
операторы в том же тесте. Однако, если первое утверждение перестало работать, MATLAB не оценивает остающиеся операторы.
Сумма всех углов получившегося прямоугольного треугольника должна всегда быть 180 градусами.
angles = rightTri([7 9]); assert(sum(angles) == 180) angles = rightTri([4 4]); assert(sum(angles) == 180) angles = rightTri([2 2*sqrt(3)]); assert(sum(angles) == 180)
Протестируйте это, стороны треугольника уменьшают до 1 и . В этом случае углы .
tol = 1e-10; angles = rightTri([2 2*sqrt(3)]); assert(abs(angles(1)-30)<= tol) assert(abs(angles(2)-60)<= tol) assert(abs(angles(3)-90)<= tol)
Для равнобедренных треугольников оба из непрямых углов должны быть 45 градусами; в противном случае assert
выдает ошибку.
Протестируйте это, две стороны треугольника равны. В этом случае соответствующие углы равны.
angles = rightTri([4 4]); assert(angles(1) == 45) assert(angles(1) == angles(2))
Чтобы запустить ваши тесты, лучшая практика состоит в том, чтобы использовать среду тестирования через runtests
функция вместо кнопки Run в Live Editor. Среда тестирования предоставляет дополнительную диагностическую информацию. В случае непройденного теста среда запускает последующие тесты, но кнопка Run в Live Editor не делает. Например, чтобы запустить этот тест в командной строке MATLAB, введите result = runtests('TestRightTriLiveScriptExample')
. Для получения дополнительной информации смотрите runtests
.