В этом примере показано, как протестировать функцию, которую вы создаете, написав live скрипт, 'TestRightTriLiveScriptExample.mlx'
. Эта функция , взятая в качестве примера, вычисляет углы прямоугольного треугольника, и вы создадите модульный тест на основе live-скриптов, чтобы протестировать функцию.
Тест, созданный на основе live-скрипта, должен соответствовать следующим соглашениям:
Имя тестового файла должно начинаться или заканчиваться словом 'test', которое не учитывает регистр. Если имя файла не начинается или заканчивается словом 'test', тесты в файле могут быть проигнорированы в определенных случаях.
Поместите каждый модульный тест в отдельный раздел файла live скрипта. Если раздел имеет заголовок в стиле Heading 1, заголовок становится именем тестового элемента. В противном случае 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 скрипт, чтобы помочь документировать тест. Создайте следующий тест для малого углового приближения. Обычно при сравнении значений с плавающей точкой задаётся допуск для сравнения.
The 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
.