2014-11-12 3 views
0

У меня есть алгоритм, который преобразует значение между целинами и farhrenheit. Для того, чтобы проверить, что она работает с широким диапазоном значений я использую TestCases NUnit как так:Как добавить допуск результата к NUnit TestCase

[TestCase(0, Result = -17.778)] 
[TestCase(50, Result = 10)] 
public double FahrenheitToCelsius(double val) { 
    return (val - 32)/1.8; 
} 

Проблема заключается в том, что первая TestCase терпит неудачу, потому что тесты для точного соответствия.
Одно решение, которое я нашел, чтобы сделать что-то вроде этого:

[TestCase(0, -17.778)] 
[TestCase(50, 10)] 
public void FahrenheitToCelsius2(double val, double expected) { 
    double result = (val - 32)/1.8; 
    Assert.AreEqual(expected, result, 0.005); 
} 

Но я не слишком доволен. Мой вопрос:
Можно ли определить терпимость к результату в TestCase?

Update:
Чтобы уточнить, я ищу что-то вдоль линий:

[TestCase(0, Result = 1.1, Tolerance = 0.05)] 
+1

Почему вы не просто .. добавьте еще один параметр в свой '[TestCase()]'? –

+1

Это именно то, для чего требуется ограничение Within(), так как @Jeroen просто добавляет третий параметр в тестовый пример. Возможно, используйте четвертый, чтобы указать Ulps (Units in Last Place), если вы хотите большего контроля. См. Http://www.nunit.org/index.php?p=equalConstraint&r=2.5.5. – ClickRick

ответ

1

Добавить еще один параметр для тестового примера:

[TestCase(0, -17.778, .005)] 
[TestCase(50, 10, 0)] 
public void FahrenheitToCelsius2(double fahrenheit, double expected, double tolerance) 
{ 
    double result = (fahrenheit - 32)/1.8; 
    Assert.AreEqual(expected, result, tolerance); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^