У меня есть несколько тестовых примеров, написанных на основе модульного тестирования модулей на основе классов, где я уверен, что расчет аналитического градиента, который я делаю, достаточно близок к численному вычислению версия. Проблема в том, что масштабы градиента довольно широко варьируются для тестовых случаев, которые я запускаю. Это означает, что, хотя я бы хотел использовать пару Name-Value AbsTol
, тест обычно терпит неудачу в том, что я считаю приемлемым пределом ошибки в некоторых случаях, в то время как RelTol
также потерпит неудачу в отношении того, что я считаю приемлемыми. Например,Смешивание абсолютных и относительных допусков в TestCase.verifyEqual
expected = [1e7 1e-7];
actual = [1e7+1 1e-5];
AbsTol = abs(expected-actual)
RelTol = abs((expected-actual)./expected)
Я бы рассмотреть первый элемент здесь, чтобы удовлетворить тест, так как это очень близко в относительном выражении, а второй элемент здесь, чтобы удовлетворить тест, так как она близка в абсолютном выражении, но я не вижу никакой возможности чтобы проверить, выполнено ли для обоих элементов. Я знаю, что я мог бы провести сравнение за пределами verifyEqual
, но это, похоже, связано с потерей хорошей диагностики, включенной в структуру тестирования.
Есть ли какой-нибудь способ, чтобы создать модульный тест, где я могу указать, что я рассматриваю такое элемент-поэлементное сравнение, где либоAbsTol
или RelTol
удовлетворяется?
Большой бонус обучения 'TestCase.forInteractiveUse' существует! –