exponenta event banner

Тест записи с использованием сценария в реальном времени

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

Проверка на основе сценария в реальном времени должна соответствовать следующим соглашениям:

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

  • Поместите каждый единичный тест в отдельный раздел файла сценария. Если раздел имеет заголовок в стиле Heading 1, заголовок становится именем тестового элемента. В противном случае MATLAB присваивает тесту имя.

  • Рассмотрим, как выполняется тест на основе сценариев в реальном времени. Если тест выполняется с помощью кнопок Run в интерактивном редакторе, и MATLAB обнаруживает сбой теста, то он останавливает выполнение сценария и не выполняет оставшиеся тесты. При запуске сценария в реальном времени с использованием инфраструктуры модульного тестирования, например, с помощью runtests функция, то если MATLAB обнаруживает сбой теста, он по-прежнему выполняет оставшиеся тесты.

  • При запуске сценария в реальном времени в качестве теста переменные, определенные в одном тесте, недоступны в других тестах. Аналогично, переменные, определенные в других рабочих пространствах, недоступны для тестов.

Вне этого примера в текущей папке 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

Испытание: аппроксимация малого угла

Для документирования теста можно включить уравнения и изображения в сценарий в реальном времени. Создайте следующий тест для аппроксимации малого угла. Обычно при сравнении значений с плавающей запятой задается допуск для сравнения.

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

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 не используется. Например, чтобы запустить этот тест в командной строке MATLAB, введите result = runtests('TestRightTriLiveScriptExample'). Дополнительные сведения см. в разделе runtests.

См. также

|

Связанные темы