Написание теста с помощью Live Script

В этом примере показано, как протестировать функцию, которую вы создаете путем записи live скрипта, 'TestRightTriLiveScriptExample.mlx'Функция, взятая в качестве примера, вычисляет углы прямоугольного треугольника, и вы создадите модульный тест на основе live-скриптов, чтобы протестировать эту функцию.

Тест, созданный на основе live-скрипта, должен соответствовать следующим соглашениям:

  • Имя тестового файла должно начинаться или заканчиваться словом 'тест', который является нечувствительным к регистру. Если имя файла не начинается или заканчивается словом 'тест', тесты в файле могут быть проигнорированы в определенных случаях.

  • Поместите каждый модульный тест в отдельный участок файла live скрипта. Если раздел имеет заголовок в Заголовке 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 скрипте, чтобы помочь задокументировать тест. Создайте следующий тест для малого углового приближения. Как правило, когда вы сравниваете значения с плавающей точкой, вы задаете допуск к сравнению.

rightTri функция должна возвращаемые значения, сопоставимые с малым угловым приближением, таким что sin(θ)θ.

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')

Тест: Сумма углов

kak=180

У вас могут быть несколько 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)

Тест: 30-60-90 треугольников

Протестируйте это, стороны треугольника уменьшают до 1 и 3. В этом случае углы 30, 60, и 90.

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.

Смотрите также

|

Похожие темы