Главная страница
Навигация по странице:

  • Порядок выполнения работы

  • 1. Краткие теоретические сведения

  • Варианты заданий

  • Лабораторная 22. Тесты для кода, написанного на языке C# Порядок выполнения работы


    Скачать 0.56 Mb.
    НазваниеТесты для кода, написанного на языке C# Порядок выполнения работы
    АнкорЛабораторная 22
    Дата17.06.2021
    Размер0.56 Mb.
    Формат файлаdocx
    Имя файлаLaboratornaya_rabota_22.docx
    ТипТесты
    #218260

    Лабораторная работа 22

    «Модульное тестирование по вариантам»
    Цель работы: Научиться разрабатывать модульные тесты для кода, написанного на языке C#

    Порядок выполнения работы:

    1. Создать с помощью Visual Studio консольный проект C# (Console Application).

    2. Создать класс (согласно своему варианту), который будет имитировать тестируемую логику.

    3. Создать в проекте тестовый класс.

    4. Разработать не менее пяти тестирующих функций. При разработке этих функций следует активно применять функции класса «Assert»

    5. Разработать тестовые методы со спецификацией ожидаемых исключений.

    6. Запустить проверку разработанного тестового класса. Скомпилировать и запустить проект. Посмотреть на результат теста.

    7. Внести в тестируемые классы изменения, приводящие к ошибкам. Скомпилировать и запустить проект.

    8. Посмотреть, пойманы ли ошибки модульным тестом.
    1. Краткие теоретические сведения
    Пространство имен Microsoft.VisualStudio.TestTools.UnitTesting содержит классы для работы модульных тестов. 
    В классе «Assert» определен набор статических методов, которые можно использовать в тестах. Класс «Assert» является одним из самых часто применяемых. Описание методов представлено в таблице ниже. 
    Каждый статический метод в классе «Assert» позволяет проверить какой-то аспект модульного теста, и если проверка не проходит, эти методы генерируют исключение. Чтобы модульный тест прошел, все утверждения должны завершиться успешно. 
    Каждый метод в классе «Assert» имеет перегруженную версию, которая принимает параметр string. В случае отрицательного результата утверждения эта строка помещается в элемент сообщения внутри объекта исключения. 

    Методы AreEqual() и AreNotEqual() имеют несколько перегруженных версий, предназначенных для сравнения специфических типов. Например, существует версия, которая позволяет сравнивать строки без учета регистра символов. 



    Напишем тест для метода, который вычисляет квадратный корень для заданного числа. 

    namespace Class Ass 


    public class MyClass 



    public static double GetSgrt(double value) 



    return Math.Sqrt(value); 






    При тестировании данного метода следует учесть два варианта решений, когда при вычислении квадратного корня мы получаем целое значение ‒ метод IsSqrtTest(), и когда проверка значений на равенство выполняется с учетом погрешности, в случае если решение содержит дробную часть, метод DeltaTest()
    namespace ClassAssTest 



    [TestClass] 

    public class MyClassTest 



    [TestMethod] 

    public void IsSqrtTest() 



    // arrange 

    const double input = 4; 

    const double expected = 2; 

    //act 

    double actual = ClassAss.MyClass.GetSgrt(input); 

    //assert 

    Assert.AreEqual(expected, actual, "Sqrt of {0} should have been {1}!", input, expected); 



    [TestMethod] 

    public voidDeltaTest() 



    // arrange 

    const double expected = 3.1; 

    const double delta = 0.07; 

    //act 

    double actual = ClassAss.MyClass.GetSgrt(10); 

    //assert 

    //проверка значений на равенство с учетом погрешности 

    Assert.AreEqual(expected, actual, delta, "fail mtssege!"); 






    Класс «TestContext» используется для хранения информации, передаваемой для модульных тестов. Рассмотрим работу данного класса на примере. 

    namespace ContexUnitTest 



    [TestClass] 

    public classUnitTest1 



    public TestContextTestContext { get; set; } // свойство 

    [TestMethod] 

    public void TestMethod1() 



    TestContext.WriteLine("TestContext.TestRunDirectory{0}",TestContext.TestRunDirectory); 

    TestContext.WriteLine("TestName{0}", TestContext.TestName); 

    TestContext.WriteLine("CurrentTestOutcomey{0}", TestContext.CurrentTestOutcome);// результат работы теста 



    [TestCleanup] 

    public void TestCleanup() 



    TestContext.WriteLine("TestName (Cleanup) {0}", TestContext.TestName); 

    TestContext.WriteLine("CurrentTestOutcomey (Cleanup) {0}", TestContext.CurrentTestOutcome); 








    Дополнительные атрибуты теста: 

    [ClassInitialize()] используется для выполнения кода до выполнения первого теста в классе. 

    [ClassCleanUp()] используется для выполнения кода после завершения выполнения всех тестов в классе. 

    [TestInitialize()] используется для выполнения кода до выполнения каждого теста. 

    [TestCleanUp()] используется для выполнения кода после завершения выполнения каждого теста. 
    Варианты заданий: 

    Вычислить и вывести на экран значения функции F в соответствии с вариантом задания. Через a, b, c, x – обозначены действительные числа. 


    написать администратору сайта