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

Этот пример показывает, как протестировать функцию, которую вы создаете путем записи 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 должна возвращать значения, сопоставимые с малым угловым приближением, таким что 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. В этом случае углы 3060, и 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.

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

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте