Написание теста с использованием Live Script

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

См. также

|

Похожие темы