Как создать программу на компьютере тест

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

В этой статье приводится подробное описание процесса создания, запуска и настройки набора модульных тестов с помощью платформы модульных тестов Майкрософт для управляемого кода и обозревателя тестов Visual Studio. В руководстве производится создание проекта C#, находящегося в стадии разработки, создание тестов для проверки его кода, запуск тестов и изучение результатов. После этого производится изменение кода проекта и повторный запуск тестов. Если вы хотите получить концептуальный обзор этих задач перед выполнением этих шагов, см. Основы модульного тестирования.

Создайте проект для тестирования

  1. Запустите Visual Studio.
  2. На начальном экране выберите Создать проект.
  3. Найдите и выберите шаблон проекта Консольное приложение на C#для .NET Core и щелкните Далее.

Примечание Если шаблон Консольное приложение отсутствует, его можно установить из окна Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. После этого в Visual Studio Installer выберите рабочую нагрузку Кроссплатформенная разработка .NET Core.

Мастер-класс. Создание тестов в программе MyTestXPro.

Примечание Если файл Program.cs не откроется в редакторе, дважды щелкните Program.cs в обозревателе решений, чтобы открыть его.

using System; namespace BankAccountNS < /// /// Bank account demo class. /// public class BankAccount < private readonly string m_customerName; private double m_balance; private BankAccount() < >public BankAccount(string customerName, double balance) < m_customerName = customerName; m_balance = balance; >public string CustomerName < get < return m_customerName; >> public double Balance < get < return m_balance; >> public void Debit(double amount) < if (amount >m_balance) < throw new ArgumentOutOfRangeException(«amount»); >if (amount < 0) < throw new ArgumentOutOfRangeException(«amount»); >m_balance += amount; // intentionally incorrect code > public void Credit(double amount) < if (amount < 0) < throw new ArgumentOutOfRangeException(«amount»); >m_balance += amount; > public static void Main() < BankAccount ba = new BankAccount(«Mr. Bryan Walton», 11.99); ba.Credit(5.77); ba.Debit(11.22); Console.WriteLine(«Current balance is $», ba.Balance); > > >

Теперь у вас есть проект с методами, которые можно протестировать. В этой статье тестирование проводится на примере метода Debit . Метод Debit вызывается, когда денежные средства снимаются со счета.

Создание проекта модульного теста

Совет В обозревателе решений щелкните решение правой кнопкой мыши и выберите пункты Добавить>Создать проект.

Создание тестов для проведения экзаменов

Примечание в Visual Studio 2019 версии 16.9 шаблон проекта MSTest имеет формат проекта модульного теста.

Создание тестового класса

Создание тестового класса, чтобы проверить класс BankAccount . Можно использовать UnitTest1.cs, созданный в шаблоне проекта, но лучше дать файлу и классу более описательные имена.

Читайте также:
Общая структура программы это

Переименуйте файл и класс

  1. Чтобы переименовать файл, в обозревателе решений выберите файл UnitTest1.cs в проекте BankTests. В контекстном меню выберите команду Переименовать (или нажмите клавишу F2), а затем переименуйте файл в BankAccountTests.cs.
  2. Чтобы переименовать класс, поместите курсор в UnitTest1 в редакторе кода, щелкните правой кнопкой мыши и выберите команду Переименовать (или нажмите клавиши F2). Введите название BankAccountTests и нажмите клавишу ВВОД.

Файл BankAccountTests.cs теперь содержит следующий код:

using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BankTests < [TestClass] public class BankAccountTests < [TestMethod] public void TestMethod1() < >> >

Добавьте оператор using

Можно также добавить оператор using в класс, чтобы тестируемый проект можно было вызывать без использования полных имен. Вверху файла класса добавьте:

using BankAccountNS;

Требования к тестовому классу

Минимальные требования к тестовому классу следующие:

  • Атрибут [TestClass] является обязательным в любом классе, содержащем методы модульных тестов, которые необходимо выполнить в обозревателе тестов.
  • Каждый метод теста, предназначенный для запуска в обозревателе тестов, должен иметь атрибут [TestMethod] .

Можно иметь другие классы в проекте модульного теста, которые не содержат атрибута [TestClass] , а также иметь другие методы в тестовых классах, у которых атрибут — [TestMethod] . Можно вызывать эти другие классы и методы в методах теста.

Создание первого тестового метода

В этой процедуре мы напишем методы модульного теста для проверки поведения метода Debit класса BankAccount .

Существует по крайней мере три поведения, которые требуется проверить:

  • Метод создает исключение ArgumentOutOfRangeException , если сумма по дебету превышает баланс.
  • Метод создает исключение ArgumentOutOfRangeException, если сумма по дебету меньше нуля.
  • Если значение дебета допустимо, то метод вычитает сумму дебета из баланса счета.

Метод по умолчанию TestMethod1 можно удалять, так как он не используется в этом руководстве.

Создание метода теста

Первый тест проверяет, снимается ли со счета нужная сумма при допустимом размере кредита (со значением меньшим, чем баланс счета, и большим, чем ноль). Добавьте следующий метод в этот класс BankAccountTests :

[TestMethod] public void Debit_WithValidAmount_UpdatesBalance() < // Arrange double beginningBalance = 11.99; double debitAmount = 4.55; double expected = 7.44; BankAccount account = new BankAccount(«Mr. Bryan Walton», beginningBalance); // Act account.Debit(debitAmount); // Assert double actual = account.Balance; Assert.AreEqual(expected, actual, 0.001, «Account not debited correctly»); >

Метод очень прост: он создает новый объект BankAccount с начальным балансом, а затем снимает допустимое значение.

Он использует метод Assert.AreEqual, чтобы проверить, что конечный баланс соответствует ожидаемому. Такие методы, как Assert.AreEqual , Assert.IsTrue и другие, зачастую используются в модульном тестировании. Дополнительную концептуальную информацию о написании модульного теста см. в разделе Написание тестов.

Требования к методу теста

Метод теста должен удовлетворять следующим требованиям:

  • Он декорируется атрибутом [TestMethod] .
  • Он возвращает void .
  • Он не должен иметь параметров.

Сборка и запуск теста

  1. В меню Сборка нажмите Построить решение (или нажмите клавиши CTRL + SHIFT + B).
  2. Откройте Обозреватель тестов, выбрав Тест>Windows>Обозреватель тестов в верхней строке меню (или нажмите клавиши CTRL + E, T).
  3. Выберите Запустить все, чтобы выполнить тест (или нажмите клавиши CTRL + R, V). Во время выполнения теста в верхней части окна Обозреватель тестов отображается анимированная строка состояния. По завершении тестового запуска строка состояния становится зеленой, если все методы теста успешно пройдены, или красной, если какие-либо из тестов не пройдены. В данном случае тест пройден не будет.
  4. Выберите этот метод в обозревателе тестов для просмотра сведений в нижней части окна.
Читайте также:
Не работают некоторые сайты и программы

Исправление кода и повторный запуск тестов

Результат теста содержит сообщение, описывающее возникшую ошибку. Чтобы увидеть это сообщение, может потребоваться выполнить детализацию. Для метода AreEqual выводится сообщение о том, что ожидалось и что было фактически получено. Ожидалось, что баланс уменьшится, а вместо этого он увеличился на сумму списания.

Модульный тест обнаружил ошибку: сумма списания добавляется на баланс счета, вместо того чтобы вычитаться.

Исправление ошибки

Чтобы исправить эту ошибку, в файле BankAccount.cs замените строку:

m_balance += amount;
m_balance -= amount;

Повторный запуск теста

В обозревателе тестов выберите Запустить все, чтобы запустить тест повторно (или нажмите клавиши CTRL + R, V). Красно-зеленая строка становится зеленой, чтобы указать, что тест был пройден.

Обозреватель тестов в Visual Studio 2019 отображает пройденный тест

Обозреватель тестов в Visual Studio 2019 отображает пройденный тест

Использование модульных тестов для улучшения кода

В этом разделе рассматривается, как последовательный процесс анализа, разработки модульных тестов и рефакторинга может помочь сделать рабочий код более надежным и эффективным.

Анализ проблем

Как начать писать тесты за 10 шагов по 10 минут

Дайте-ка угадаю: вы согласны с тем, что писать тесты — это хорошо. Это повышает надежность системы, ускоряет разработку, проект с хорошим тестовым покрытием поддерживать легко и приятно, а TDD — это вообще почти идеал процесса разработки. Но не у вас в проекте. То есть, оно клёво, но, к сожалению, сейчас столько работы — просто завал.

Куча задач, одних только критических багов — два десятка, плюс надо срочно дописать этот модуль и еще написать письмо заказчику… Так что тесты, наверное, будем прикручивать уже в конце, если время останется. Или в следующем проекте. Нет, ну там точно полегче будет. Скорее всего.

Как, узнали ситуацию?

Так вот — чушь всё это. Сфера ИТ — бесконечна, как вселенная, куча работы будет всегда. Можно или начать писать тесты прямо сейчас, или не сделать этого никогда. Я тут набросал короткий план, как начать это делать за 10 шагов, по шагу в день, по 10 минут на шаг. И когда я говорю «10 минут» я имею в виду не «3 с половиной часа» и не «ну сколько-то времени, лучше побольше», а именно 600 секунд.

Если у вас нету в день 600 секунд свободного времени — срочно меняйте проект, работу, профессию, страну проживания (нужное подчеркнуть), потому что это не жизнь, а каторга какая-то. Поехали.

1. Выбираем фреймворк для тестов

Не вздумайте начинать писать собственный фреймворк с нуля — оно вам надо? Тратить неделю на выбор оптимального фреймворка (да, я видел такую оценку времени на это в планах) — тоже глупо. Вот вам рецепт: набирайте в Гугле best test framework for %language% site:stackoverflow.com. Открываете первые 5 ссылок. Закрываете те из них, где рейтинг вопроса или первого ответа около нуля.

Из оставшихся вкладок можно смело брать любой рекомендованный фреймворк из первой тройки с максимальным рейтингом. С вероятностью в 99.5% он вам подойдет. Поскольку на данный шаг вы пока потратили минуты 3, то оставшиеся 7 можно потратить на то, чтобы перейти на сайт фреймворка и посмотреть примеры его использования. Скорее всего, там всё будет просто и понятно (иначе он не был бы в топе рекомендаций). Но если вдруг нет — выберите другой по тому же алгоритму.

Читайте также:
Какие существуют программы молодым семьям
2. Пишем Hello world!


Написать Hello, world! нам раз плюнуть. Вот, например, на С++.
Hello world!

#include using namespace std; int main()

А теперь сделаем две вещи.
Во-первых, вынесем генерацию выводимого текста в отдельные функции. Да, в две. Это для того, чтобы потом их можно было тестировать.

Hello world! после рефакторинга

#include #include using namespace std; string GetHello() < return «Hello»; >string GetAdressat(string adressat) < return adressat; >int main()

Во-вторых, вынесем написанные функции куда-нибудь из данного файла. В зависимости от подхода и применяемого языка это могут быть просто отдельные файлы кода или библиотека. Это нужно для того, чтобы потом эти функции вызывать из тестов.
У нас будет так:

HelloFunctions.h

#include using namespace std; string GetHello(); string GetAdressat(string adressat);
HelloFunctions.cpp
#include «HelloFunctions.h» string GetHello() < return «Hello»; >string GetAdressat(string adressat)
HelloWorld.cpp
#include #include «HelloFunctions.h» using namespace std; int main()

3. Подключаем фреймворк к Hello world!

О подключении фреймворка к проекту наверняка очень хорошо написано на сайте фреймворка.

Или на stackoverflow. Или на Хабре. Вот я, к примеру, когда-то описывал подключение Google Test. Обычно всё сводится к созданию нового проекта консольного исполняемого приложения (в скриптовых языках — отдельного скрипта), подключению к нему фрейворка парой include (importusing), подключению к проекту тестируемого кода (включением самих файлов с кодом или подключением библиотеки) — ну и всё. Если вы не верите, что этот шаг можно сделать за 10 минут — откройте Youtube, напишите в поиск название своего фреймворка и пронаблюдайте 20 видеороликов примерно одинакового содержимого, которые это доказывают.

4. Разбираемся с возможностями фреймворка
  • Как написать один юнит-тест
  • Как запустить юнит-тесты

Вот, к примеру, пару тестов для нашего Hello world! на упомянутом выше Google Test:

#include «HelloFunctions.h» #include «gtest/gtest.h» class CHelloTest : public ::testing::Test < >; TEST_F(CHelloTest, CheckGetHello) < ASSERT_TRUE(GetHello() == «Hello»); >TEST_F(CHelloTest, GetAdressat) < ASSERT_TRUE(GetAdressat(«world») == «world»); ASSERT_FALSE(GetAdressat(«not world») == «world»); >int main(int argc, char **argv)

5. Подключаем фреймворк к настоящему проекту

EduNeo

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

Главная | Технологии для учителя и преподавателей | 7 лучших сервисов для создания тестов и опросов

7 лучших сервисов для создания тестов и опросов

Сервисы для тестов

Aвтор материала: Кристина Путина —
эксперт образовательного центра «Каменный город».
Проект автора: Каменный город

Тесты давно стали неотъемлемой частью рабочих будней любого педагога. Раньше приходилось печатать их на бумаге, собирать листочки или тетради у каждого ученика, вручную проверять и анализировать результаты, гадать с ответами из-за почерков…

Сейчас в нашем распоряжении онлайн-сервисы на любой вкус, которые серьезно экономят время и ресурсы. Мы получаем новые возможности: дистанционный сбор ответов, автоматическую оценку результатов, мгновенное редактирование материалов.

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru