Создание теста и обработка исключения - C#

Узнай цену своей работы

Формулировка задачи:

Есть некая библиотека:
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;
К которой нужно написать тесты. Тест на проверку больше 0 я написал, а вот с проверкой на значение null возникли ошибки. Подскажите что не так ? Код компилируется, но тест выполняется с ошибкой.
[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;
            }
Тест ругается на System.InvalidOperationException (нулевой объект должен иметь значение) и не проходит. Что и как исправить ?

Решение задачи: «Создание теста и обработка исключения»

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;
         }
        
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5