Создание теста и обработка исключения - C#
Формулировка задачи:
Есть некая библиотека:
К которой нужно написать тесты.
Тест на проверку больше 0 я написал, а вот с проверкой на значение null возникли ошибки. Подскажите что не так ?
Код компилируется, но тест выполняется с ошибкой.
Тест ругается на System.InvalidOperationException (нулевой объект должен иметь значение) и не проходит.
Что и как исправить ?
namespace ClassLibrary1
{
public static class tringle
{
public const string ChypotenuseMessageZero = "Значение меньше нуля";
public const string ChypotenuseMessageNull = "Данные не введены";
public static double Сhypotenuse(double a, double b)
{
if (a <= 0 || b <= 0)
{
throw new ArgumentOutOfRangeException("a. b", ChypotenuseMessageZero);
}
if((object)a == null || (object)b == null)
{
throw new ArgumentNullException("a, b", ChypotenuseMessageNull);
}
double c = Math.Sqrt((a * a) + (b * b));
return c;[TestMethod]
public void Test_Tringle_Сhypotenuse_Null()
{
//arrange
double? a1 = null;
double a = (double)a1;
double? b1 = null;
double b = (double)b1;
try
{
//act
double actual = tringle.Сhypotenuse(a, b);
}
catch (ArgumentNullException ex)
{
//assert
StringAssert.Contains(ex.Message, tringle.ChypotenuseMessageNull);
return;
}Решение задачи: «Создание теста и обработка исключения»
textual
Листинг программы
namespace ClassLibrary1
{
public static class tringle
{
public const string ChypotenuseMessageZero = "Значение меньше нуля";
public static double Сhypotenuse(double a, double b)
{
if (a <= 0)throw new ArgumentOutOfRangeException("a", ChypotenuseMessageZero);
if (b <= 0) throw new ArgumentOutOfRangeException("b", ChypotenuseMessageZero);
double c = Math.Sqrt((a * a) + (b * b));
return c;
}
public static double Stringle (double a, double b, double c)
{
double p = (a + b + c) / 2d;
double s = Math.Sqrt(p * (p - a) * (p - b) * (p - c));
return s;
}
}
}