- Создание теста с помощью Microsoft Forms
- Начало нового теста
- Добавление вопросов
- Предварительный просмотр теста
- Начало нового теста
- Добавление вопросов
- Предварительный просмотр теста
- Дополнительные ресурсы
- Сделать тест на windows forms
- Создать тест знаний внутри проекта Windows Forms
- Пошаговое руководство. Создание и запуск модульных тестов для управляемого кода Walkthrough: Create and run unit tests for managed code
- Создайте проект для тестирования Create a project to test
- Создание проекта модульного теста Create a unit test project
- Создание тестового класса Create the test class
- Переименуйте файл и класс Rename a file and class
- Добавьте оператор using Add a using statement
- Требования к тестовому классу Test class requirements
- Создание первого тестового метода Create the first test method
- Создание метода теста To create a test method
- Требования к методу теста Test method requirements
- Сборка и запуск теста Build and run the test
- Исправление кода и повторный запуск тестов Fix your code and rerun your tests
- Исправление ошибки Correct the bug
- Повторный запуск теста Rerun the test
- Использование модульных тестов для улучшения кода Use unit tests to improve your code
- Анализ проблем Analyze the issues
- Создание и запуск новых методов теста Create and run new test methods
- Продолжение анализа Continue the analysis
- Рефакторинг тестируемого кода Refactor the code under test
- Рефакторинг тестовых методов Refactor the test methods
- Повторное тестирование, переписывание и анализ Retest, rewrite, and reanalyze
- Заключение Conclusion
Создание теста с помощью Microsoft Forms
Совет: Узнайте больше о Microsoft Forms или сразу приступите к работе и создайте опрос или тест. Хотите использовать более сложные элементы фирменной символики, типы вопросов и анализ данных? Попробуйте Dynamics 365 Customer Voice.
Примечание: Вы создаете опрос, опрос или форму другого типа? Начните отсюда!
Благодаря Microsoft Forms преподаватель может быстро оценить успехи учащихся и организовать обратную связь в режиме реального времени с помощью тестов, которые он сам создает и назначает своему классу.
Microsoft Forms также включает в себя насыщенные аналитические данные в режиме реального времени, которые предоставляют сводную информацию, а также результаты для отдельных учащихся. Результаты теста можно экспортировать в Microsoft Excel для более подробного анализа.
Начало нового теста
Во sign in to Microsoft Forms with your Microsoft 365 school or work account.
Выберите стрелку вниз рядом с «Создатьформу» и выберите «Создать тест».
Введите имя теста и, если хотите, описание для него.
Примечание: Названия теста могут содержать до 90 знаков. Описание может иметь до 1000 символов.
Примечание: Созданный тест сохраняется автоматически.
Добавление вопросов
Выберите добавить новый вопрос в тест.
Выберите тип добавляемого вопроса, например «Выбор», «Текст», «Оценка» или «Дата». Выберите другие типы вопросов дляранжирования, Likert, отправкифайлов или Net Promoter Score® типов вопросов. Чтобы упорядоизировать разделы по вашим вопросам, выберите «Раздел».
Совет: Вы также можете отформатирование текста. Выделите слово или слова, а затем выберите полужирное наиегов, курсив или подчеркивание на плавающей панели инструментов. Для форматирование также можно использовать сочетания клавиш (CTRL/CMD+B для полужирного на применении клавиш CTRL/CMD+I, CTRL+I — для подчеркнутых.
Форматирование текста развертывается постепенно и станет доступно в ближайшее время.
Примечание: Отправка файлов недоступна для сред GCC, GCC High и DoD.
Используя в качестве примера тип вопроса «Выбор», добавьте свой вопрос и ответы. Выберите «Добавить», чтобы добавить дополнительные варианты ответа.
Совет: Выберите «Дополнительные параметры» для вопроса > подзаголовок, чтобы добавить к вопросу подзаголовок.
Рядом с правильными ответами и ответами выберите пометку «Правильный ответ».
Чтобы удалить ответ, рядом с ней выберите кнопку корзины. Вы также можете сделать ответ обязательным или разрешить несколько вариантов выбора с помощью параметров под вопросом.
Добавьте число в текстовое поле «Баллы», чтобы назначить баллы за правильный ответ на вопрос теста.
Если вы хотите настроить сообщение для него, выберите значок сообщения рядом с ответом. Респонденты увидят это сообщение, когда ответ будет выбран.
Чтобы отобразить математические формулы, выберите дополнительные параметры для вопроса > математическими формулами.
Выберите «Введите формулу», чтобы запускать различные математические символы и параметры формул, которые нужно использовать в тесте.
Совет: Чтобы скопировать вопрос, в правом верхнем углу выберите значок «Копировать вопрос». Чтобы изменить порядок вопросов, нажимайте клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ справа от каждого вопроса.
Предварительный просмотр теста
Выберите «Просмотр», чтобы посмотреть, как ваш тест будет выглядеть на компьютере или мобильном устройстве.
Чтобы проверить тест, ответьте на вопросы в режиме предварительного просмотра и выберите «Отправить».
Чтобы продолжать редактирование теста, выберите «Назад».
Начало нового теста
Во sign in to Microsoft 365 with your school account.
Примечание: Эта функция применима только к записным книжкам для занятий и саффесс-записным книжкам для пользователей Office 365 для образования. Узнайте больше о записной книжке OneNote для занятий и записной книжке OneNote для персонала.
Откройте записную книжку OneNote, в которую вы хотите вставить тест.
На вкладке Вставка нажмите кнопку Формы.
Примечание: Кнопка «Формы» доступна только Office 365 для образования пользователям. Чтобы получить доступ к Forms OneNote в Интернете, войтесь в свою учетную запись учебного заведения.
Откроется панель Forms для OneNote, которая будет закреплена с правой стороны записной книжки OneNote.
В области «Мои формы»выберите «Новый тест».
В веб-браузере откроется новая вкладка Microsoft Forms.
Выберите заголовок по умолчанию и обновите его с помощью собственного заголовка. При этом вы также можете добавить описание.
Примечание: Названия тестов могут иметь до 90 знаков. Описание может иметь до 1000 символов.
Примечание: Созданный тест сохраняется автоматически.
Добавление вопросов
Выберите добавить новый вопрос в тест.
Выберите тип добавляемого вопроса, например «Выбор», «Текст»,«Оценка» или «Дата». Выберите другие типы вопросов дляранжирования, Likert, отправкифайлов или Net Promoter Score® типов вопросов. Чтобы упорядоизировать разделы по вашим вопросам, выберите «Раздел».
Совет: Вы также можете отформатирование текста. Выделите слово или слова, а затем выберите полужирное наиегов, курсив или подчеркивание на плавающей панели инструментов. (Или используйте сочетания клавиш CTRL/CMD+B для полужирного на подчеркнутого, CTRL/CMD+I — для полужирного на подчеркнутого, CTRL/CMD+I — для формата.)
Форматирование текста развертывается постепенно и станет доступно в ближайшее время.
Примечание: Отправка файлов недоступна для сред GCC, GCC High и DoD.
Предварительный просмотр теста
Выберите «Просмотр», чтобы посмотреть, как ваш тест будет выглядеть на компьютере или мобильном устройстве.
Чтобы проверить тест, ответьте на вопросы в режиме предварительного просмотра и выберите «Отправить».
Чтобы продолжать редактирование теста, выберите «Назад».
Созданный тест появится в верхней части списка «Мои формы» в области «Формы для OneNote» и будет внедрен в записную книжку OneNote. Подробнее.
Дополнительные ресурсы
Теперь, когда у вас есть базовые возможности, вы также можете настроить тему формы,добавить рисунок к вопросу,создать разделы, использовать логику ветвчения и не только.
Сделать тест на windows forms
Создать тест знаний внутри проекта Windows Forms
Всем добра! Люди, помогите, в долгу не останусь, есть черновая программка для курсовой, нужно.
Как сделать скролл в Windows Forms?
Как в с++ windows forms сделать в форме скролл, который бы действительно прокручивал форму вниз.
Как сделать привилегии в windows forms
Не могу понять как сделать для каждого пользователя свою привилегию. Допустим есть окно.
Давид Монтиков, отвратительно поставленный вопрос!
варианты ответов (под стать вопросу):
1) руками
2) запрограммировать
3) легко!
выбирай любой.
задавай конкретные вопросы! «как готовить еду?» и «сколько воды надо на 200 грамм риса, чтобы он получился рассыпчатым?» — это, согласись, абсолютно разный подход.
а ну раз так, то вот:
1) код нужен на C# (раз уж ты в этом разделе пишешь)
2) использовать нужно либо файлы (подозреваю, что лучше всего использовать бинарную сериализацию — ответы на вопросы выцепить будет чуть-чуть сложнее тем, кто решит ломануть), либо БД (хватит и MS Access в случае чего)
3) в самом примитивном варианте на форме будут нужны:
— 1 лейбл (сам вопрос)
— 1 кнопка (для подтверждения ответа, но можно обойтись и без нее)
— несколько радиобаттонов (по числу вариантов ответа на каждый вопрос)
а дальше — пока у тебя не будет конкретных вопросов (причем не из серии «как мне использовать лейбл», «какой код забивать в кнопку» и т.п., а нормальных вопросов, в которых ты покажешь что сам сделал хоть что-нибудь) — вряд ли кто-нибудь тебе будет помогать.
Создать тест знаний внутри проекта Windows Forms
Вложения
Архив ZIP — WinRAR.zip (7.32 Мб, 9 просмотров) |
Создать тест для проверки знаний по математике
За любую помощь и информацию о решении подобного рода заданий буду очень благодарна Нарушаете.
Сделать тест на windows forms
ребят подскажите как сделать тест (психилогический или другой)на windows forms, дали курсач, не.
Ошибка при создании проекта Windows Forms
Пытаюсь создать форму для C++, стандартно есть только в C#. Делаю всё как в этой статье.
Создание Windows Forms проекта в Visual Studio 2015
Друзья, помогите, не дайте сойти с ума. Присутствует ли какая-то возможность заиметь привычные.
Вложения
Архив ZIP — WinRAR (2).zip (225.2 Кб, 7 просмотров) |
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
При перемещении элементов внутри Windows Forms, элементы пропадают?
ИСПОЛЬЗУЕТСЯ: С#, Windows Forms ИМЕЕТСЯ: На Windows Forms расположены вложенные друг в друга.
Создать Windows Forms с использованием бд
Здравствуйте. Необходимо реализовать приложение, которое будет хранить некую информацию в бд, и.
Создать консоль из Windows Forms
Я хочу создать консольную программу. Мне нужно чтобы он был из Windows Forms, так как мне нужно.
Тест на проверку знаний
Ситуация такая. Мне в программу нужно добавить кнопку для создание теста и вывод результатов всех.
Пошаговое руководство. Создание и запуск модульных тестов для управляемого кода Walkthrough: Create and run unit tests for managed code
В этой статье приводится подробное описание процесса создания, запуска и настройки набора модульных тестов с помощью платформы модульных тестов Майкрософт для управляемого кода и обозревателя тестов Visual Studio. This article steps you through creating, running, and customizing a series of unit tests using the Microsoft unit test framework for managed code and Visual Studio Test Explorer. В руководстве производится создание проекта C#, находящегося в стадии разработки, создание тестов для проверки его кода, запуск тестов и изучение результатов. You start with a C# project that is under development, create tests that exercise its code, run the tests, and examine the results. После этого производится изменение кода проекта и повторный запуск тестов. Then you change the project code and rerun the tests.
Создайте проект для тестирования Create a project to test
Запустите Visual Studio. Open Visual Studio.
В меню Файл выберите Создать > Проект. On the File menu, select New > Project.
Откроется диалоговое окно Новый проект . The New Project dialog box appears.
В разделе Visual C# > .NET Core выберите шаблон проекта Консольное приложение (.NET Core) . Under the Visual C# > .NET Core category, choose the Console App (.NET Core) project template.
Присвойте проекту имя Bank и нажмите кнопку ОК. Name the project Bank, and then click OK.
Будет создан проект Bank. Он отобразится в обозревателе решений, а его файл Program.cs откроется в редакторе кода. The Bank project is created and displayed in Solution Explorer with the Program.cs file open in the code editor.
Если файл Program.cs не откроется в редакторе, дважды щелкните Program.cs в обозревателе решений, чтобы открыть его. If Program.cs is not open in the editor, double-click the file Program.cs in Solution Explorer to open it.
Запустите Visual Studio. Open Visual Studio.
На начальном экране выберите Создать проект. On the start window, choose Create a new project.
Найдите и выберите шаблон проекта Консольное приложение на C#для .NET Core и щелкните Далее. Search for and select the C# Console App project template for .NET Core, and then click Next.
Если шаблон Консольное приложение отсутствует, его можно установить из окна Создание проекта. If you do not see the Console App template, you can install it from the Create a new project window. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов. In the Not finding what you’re looking for? message, choose the Install more tools and features link. После этого в Visual Studio Installer выберите рабочую нагрузку Кроссплатформенная разработка .NET Core. Then, in the Visual Studio Installer, choose the .NET Core cross-platform development workload.
Назовите проект Bank и щелкните Далее. Name the project Bank, and then click Next.
Выберите рекомендуемую версию целевой платформы (.NET Core 3.1) или .NET 5 и щелкните Создать. Choose either the recommended target framework (.NET Core 3.1) or .NET 5, and then choose Create.
Будет создан проект Bank. Он отобразится в обозревателе решений, а его файл Program.cs откроется в редакторе кода. The Bank project is created and displayed in Solution Explorer with the Program.cs file open in the code editor.
Если файл Program.cs не откроется в редакторе, дважды щелкните Program.cs в обозревателе решений, чтобы открыть его. If Program.cs is not open in the editor, double-click the file Program.cs in Solution Explorer to open it.
Замените содержимое файла Program.cs следующими кодом на C#, который определяет класс BankAccount: Replace the contents of Program.cs with the following C# code that defines a class, BankAccount:
Переименуйте файл в BankAccount.cs, щелкнув его правой кнопкой мыши и выбрав команду Переименовать в обозревателе решений. Rename the file to BankAccount.cs by right-clicking and choosing Rename in Solution Explorer.
В меню Сборка нажмите Построить решение (или нажмите клавиши CTRL + SHIFT + B). On the Build menu, click Build Solution (or press Ctrl + SHIFT + B).
Теперь у вас есть проект с методами, которые можно протестировать. You now have a project with methods you can test. В этой статье тестирование проводится на примере метода Debit . In this article, the tests focus on the Debit method. Метод Debit вызывается, когда денежные средства снимаются со счета. The Debit method is called when money is withdrawn from an account.
Создание проекта модульного теста Create a unit test project
В меню Файл выберите Добавить > Создать проект. On the File menu, select Add > New Project.
В обозревателе решений щелкните решение правой кнопкой мыши и выберите пункты Добавить > Создать проект. You can also right-click on the solution in Solution Explorer and choose Add > New Project.
В диалоговом окне Новый проект разверните узлы Установленные и Visual C# и выберите Тест. In the New Project dialog box, expand Installed, expand Visual C#, and then choose Test.
В списке шаблонов выберите Тестовый проект MSTest (.NET Core) . From the list of templates, select MSTest Test Project (.NET Core).
В поле Имя введите BankTests , а затем нажмите кнопку ОК. In the Name box, enter BankTests , and then select OK.
Проект BankTests добавляется в решение Банк. The BankTests project is added to the Bank solution.
Введите модульный тест в поле поиска, выберите C# в качестве языка, выберите Проект модульного теста на C# для шаблона .NET Core и щелкните Далее. Type unit test in the search box, select C# as the language, and then select the C# Unit Test Project for .NET Core template, and then click Next.
Начиная с Visual Studio 2019 версии 16.9, имя шаблона проекта MSTest изменено с Проект модульного теста MSTest (.NET Core) на Проект модульного теста. Starting in Visual Studio 2019 version 16.9, the MSTest project template name changed from MSTest Unit Test Project (.NET Core) to Unit Test Project.
Назовите проект BankTests и щелкните Далее. Name the project BankTests and click Next.
Выберите рекомендуемую версию целевой платформы (.NET Core 3.1) или .NET 5 и щелкните Создать. Choose either the recommended target framework (.NET Core 3.1) or .NET 5, and then choose Create.
Проект BankTests добавляется в решение Банк. The BankTests project is added to the Bank solution.
В проекте BankTests добавьте ссылку на проект Банк. In the BankTests project, add a reference to the Bank project.
В обозревателе решений щелкните Зависимости в проекте BankTests, а затем выберите в контекстном меню Добавить ссылку. In Solution Explorer, select Dependencies under the BankTests project and then choose Add Reference from the right-click menu.
В диалоговом окне Диспетчер ссылок разверните Проекты, выберите Решение и выберите элемент Банк. In the Reference Manager dialog box, expand Projects, select Solution, and then check the Bank item.
Нажмите кнопку ОК. Choose OK.
Создание тестового класса Create the test class
Создание тестового класса, чтобы проверить класс BankAccount . Create a test class to verify the BankAccount class. Можно использовать UnitTest1.cs, созданный в шаблоне проекта, но лучше дать файлу и классу более описательные имена. You can use the UnitTest1.cs file that was generated by the project template, but give the file and class more descriptive names.
Переименуйте файл и класс Rename a file and class
- Чтобы переименовать файл, в обозревателе решений выберите файл UnitTest1.cs в проекте BankTests. To rename the file, in Solution Explorer, select the UnitTest1.cs file in the BankTests project. В контекстном меню выберите команду Переименовать (или нажмите клавишу F2), а затем переименуйте файл в BankAccountTests.cs. From the right-click menu, choose Rename (or press F2), and then rename the file to BankAccountTests.cs.
- Чтобы переименовать класс, выберите Да в открывшемся диалоговом окне, предлагающем также переименовать ссылки на элемент кода. To rename the class, choose Yes in the dialog box that pops up and asks whether you want to also rename references to the code element.
- Чтобы переименовать класс, поместите курсор в UnitTest1 в редакторе кода, щелкните правой кнопкой мыши и выберите команду Переименовать (или нажмите клавиши F2). To rename the class, position the cursor on UnitTest1 in the code editor, right-click, and then choose Rename (or press F2). Введите название BankAccountTests и нажмите клавишу ВВОД. Type in BankAccountTests and then press Enter.
Файл BankAccountTests.cs теперь содержит следующий код: The BankAccountTests.cs file now contains the following code:
Добавьте оператор using Add a using statement
Можно также добавить оператор using в класс, чтобы тестируемый проект можно было вызывать без использования полных имен. Add a using statement to the test class to be able to call into the project under test without using fully qualified names. Вверху файла класса добавьте: At the top of the class file, add:
Требования к тестовому классу Test class requirements
Минимальные требования к тестовому классу следующие: The minimum requirements for a test class are:
Атрибут [TestClass] является обязательным в любом классе, содержащем методы модульных тестов, которые необходимо выполнить в обозревателе тестов. The [TestClass] attribute is required on any class that contains unit test methods that you want to run in Test Explorer.
Каждый метод теста, предназначенный для запуска в обозревателе тестов, должен иметь атрибут [TestMethod] . Each test method that you want Test Explorer to recognize must have the [TestMethod] attribute.
Можно иметь другие классы в проекте модульного теста, которые не содержат атрибута [TestClass] , а также иметь другие методы в тестовых классах, у которых атрибут — [TestMethod] . You can have other classes in a unit test project that do not have the [TestClass] attribute, and you can have other methods in test classes that do not have the [TestMethod] attribute. Можно вызывать эти другие классы и методы в методах теста. You can call these other classes and methods from your test methods.
Создание первого тестового метода Create the first test method
В этой процедуре мы напишем методы модульного теста для проверки поведения метода Debit класса BankAccount . In this procedure, you’ll write unit test methods to verify the behavior of the Debit method of the BankAccount class.
Существует по крайней мере три поведения, которые требуется проверить: There are at least three behaviors that need to be checked:
Метод создает исключение ArgumentOutOfRangeException , если сумма по дебету превышает баланс. The method throws an ArgumentOutOfRangeException if the debit amount is greater than the balance.
Метод создает исключение ArgumentOutOfRangeException, если сумма по дебету меньше нуля. The method throws an ArgumentOutOfRangeException if the debit amount is less than zero.
Если значение дебета допустимо, то метод вычитает сумму дебета из баланса счета. If the debit amount is valid, the method subtracts the debit amount from the account balance.
Метод по умолчанию TestMethod1 можно удалять, так как он не используется в этом руководстве. You can delete the default TestMethod1 method, because you won’t use it in this walkthrough.
Создание метода теста To create a test method
Первый тест проверяет, снимается ли со счета нужная сумма при допустимом размере кредита (со значением меньшим, чем баланс счета, и большим, чем ноль). The first test verifies that a valid amount (that is, one that is less than the account balance and greater than zero) withdraws the correct amount from the account. Добавьте следующий метод в этот класс BankAccountTests : Add the following method to that BankAccountTests class:
Метод очень прост: он создает новый объект BankAccount с начальным балансом, а затем снимает допустимое значение. The method is straightforward: it sets up a new BankAccount object with a beginning balance and then withdraws a valid amount. Он использует метод Assert.AreEqual, чтобы проверить, что конечный баланс соответствует ожидаемому. It uses the Assert.AreEqual method to verify that the ending balance is as expected.
Требования к методу теста Test method requirements
Метод теста должен удовлетворять следующим требованиям: A test method must meet the following requirements:
Он декорируется атрибутом [TestMethod] . It’s decorated with the [TestMethod] attribute.
Он возвращает void . It returns void .
Он не должен иметь параметров. It cannot have parameters.
Сборка и запуск теста Build and run the test
В меню Сборка нажмите Построить решение (или нажмите клавиши CTRL + SHIFT + B). On the Build menu, choose Build Solution (or press Ctrl + SHIFT + B).
Откройте Обозреватель тестов, выбрав Тест > Windows > Обозреватель тестов в верхней строке меню (или нажмите клавиши CTRL + E, T). If Test Explorer is not open, open it by choosing Test > Windows > Test Explorer from the top menu bar (or press Ctrl + E, T).
Выберите Запустить все, чтобы выполнить тест (или нажмите клавиши CTRL + R, V). Choose Run All to run the test (or press Ctrl + R, V).
Во время выполнения теста в верхней части окна Обозреватель тестов отображается анимированная строка состояния. While the test is running, the status bar at the top of the Test Explorer window is animated. По завершении тестового запуска строка состояния становится зеленой, если все методы теста успешно пройдены, или красной, если какие-либо из тестов не пройдены. At the end of the test run, the bar turns green if all the test methods pass, or red if any of the tests fail.
В данном случае тест пройден не будет. In this case, the test fails.
Выберите этот метод в обозревателе тестов для просмотра сведений в нижней части окна. Select the method in Test Explorer to view the details at the bottom of the window.
Исправление кода и повторный запуск тестов Fix your code and rerun your tests
Результат теста содержит сообщение, описывающее возникшую ошибку. The test result contains a message that describes the failure. Для метода AreEqual выводится сообщение о том, что ожидалось и что было фактически получено. For the AreEqual method, the message displays what was expected and what was actually received. Ожидалось, что баланс уменьшится, а вместо этого он увеличился на сумму списания. You expected the balance to decrease, but instead it increased by the amount of the withdrawal.
Модульный тест обнаружил ошибку: сумма списания добавляется на баланс счета, вместо того чтобы вычитаться. The unit test has uncovered a bug: the amount of the withdrawal is added to the account balance when it should be subtracted.
Исправление ошибки Correct the bug
Чтобы исправить эту ошибку, в файле BankAccount.cs замените строку: To correct the error, in the BankAccount.cs file, replace the line:
Повторный запуск теста Rerun the test
В обозревателе тестов выберите Запустить все, чтобы запустить тест повторно (или нажмите клавиши CTRL + R, V). In Test Explorer, choose Run All to rerun the test (or press Ctrl + R, V). Красно-зеленая строка становится зеленой, чтобы указать, что тест был пройден. The red/green bar turns green to indicate that the test passed.
Использование модульных тестов для улучшения кода Use unit tests to improve your code
В этом разделе рассматривается, как последовательный процесс анализа, разработки модульных тестов и рефакторинга может помочь сделать рабочий код более надежным и эффективным. This section describes how an iterative process of analysis, unit test development, and refactoring can help you make your production code more robust and effective.
Анализ проблем Analyze the issues
Мы создали тестовый метод для подтверждения того, что допустимая сумма правильно вычитается в методе Debit . You’ve created a test method to confirm that a valid amount is correctly deducted in the Debit method. Теперь проверим, что метод создает исключение ArgumentOutOfRangeException, если сумма по дебету: Now, verify that the method throws an ArgumentOutOfRangeException if the debit amount is either:
- больше баланса или greater than the balance, or
- меньше нуля. less than zero.
Создание и запуск новых методов теста Create and run new test methods
Создадим метод теста для проверки правильного поведения в случае, когда сумма по дебету меньше нуля: Create a test method to verify correct behavior when the debit amount is less than zero:
Мы используем метод ThrowsException для подтверждения правильности созданного исключения. Use the ThrowsException method to assert that the correct exception has been thrown. Этот метод приводит к тому, что тест не будет пройден, если не возникнет исключения ArgumentOutOfRangeException. This method causes the test to fail unless an ArgumentOutOfRangeException is thrown. Если временно изменить тестируемый метод для вызова более общего исключения ApplicationException при значении суммы по дебету меньше нуля, то тест работает правильно — то есть завершается неудачно. If you temporarily modify the method under test to throw a more generic ApplicationException when the debit amount is less than zero, the test behaves correctly—that is, it fails.
Чтобы проверить случай, когда размер списания превышает баланс, выполните следующие действия: To test the case when the amount withdrawn is greater than the balance, do the following steps:
Создать новый метод теста с именем Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange . Create a new test method named Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange .
Скопировать тело метода из Debit_WhenAmountIsLessThanZero_ShouldThrowArgumentOutOfRange в новый метод. Copy the method body from Debit_WhenAmountIsLessThanZero_ShouldThrowArgumentOutOfRange to the new method.
Присвоить debitAmount значение, превышающее баланс. Set the debitAmount to a number greater than the balance.
Выполните два теста и убедитесь, что они пройдены. Running the two tests and verify that they pass.
Продолжение анализа Continue the analysis
Тестируемый метод можно дополнительно улучшить. The method being tested can be improved further. При такой реализации мы не можем знать, какое условие ( amount > m_balance или amount ) приводят к исключению, возвращаемому в ходе теста. With the current implementation, we have no way to know which condition ( amount > m_balance or amount ) led to the exception being thrown during the test. Нам просто известно, что ArgumentOutOfRangeException где-то возникает в методе. We just know that an ArgumentOutOfRangeException was thrown somewhere in the method. Было бы лучше знать, какое условие в BankAccount.Debit вызвало исключение ( amount > m_balance или amount ), чтобы быть уверенными в том, что наш метод правильно проверяет свои аргументы. It would be better if we could tell which condition in BankAccount.Debit caused the exception to be thrown ( amount > m_balance or amount ) so we can be confident that our method is sanity-checking its arguments correctly.
Еще раз проанализировав тестируемый метод BankAccount.Debit , можно заметить, что оба условных оператора используют конструктор ArgumentOutOfRangeException , который просто получает имя аргумента в качестве параметра: Look at the method being tested ( BankAccount.Debit ) again, and notice that both conditional statements use an ArgumentOutOfRangeException constructor that just takes name of the argument as a parameter:
Так выглядит конструктор, который можно использовать для сообщения более детальной информации: ArgumentOutOfRangeException(String, Object, String) включает имя аргумента, значения аргумента и определяемое пользователем сообщение. There is a constructor you can use that reports far richer information: ArgumentOutOfRangeException(String, Object, String) includes the name of the argument, the argument value, and a user-defined message. Мы можем выполнить рефакторинг тестируемого метода для использования данного конструктора. You can refactor the method under test to use this constructor. Более того, можно использовать открытые для общего доступа члены типа для указания ошибок. Even better, you can use publicly available type members to specify the errors.
Рефакторинг тестируемого кода Refactor the code under test
Сначала определим две константы для сообщений об ошибках в области видимости класса. First, define two constants for the error messages at class scope. Добавьте это в тестируемый класс ( BankAccount ): Put these in the class under test, BankAccount :
Затем изменим два условных оператора в методе Debit : Then, modify the two conditional statements in the Debit method:
Рефакторинг тестовых методов Refactor the test methods
Выполните рефакторинг методов теста, удалив вызов Assert.ThrowsException. Refactor the test methods by removing the call to Assert.ThrowsException. Заключите вызов Debit() в блок try/catch , перехватите конкретное ожидаемое исключение и проверьте соответствующее ему сообщение. Wrap the call to Debit() in a try/catch block, catch the specific exception that’s expected, and verify its associated message. Метод Microsoft.VisualStudio.TestTools.UnitTesting.StringAssert.Contains обеспечивает возможность сравнения двух строк. The Microsoft.VisualStudio.TestTools.UnitTesting.StringAssert.Contains method provides the ability to compare two strings.
В этом случае метод Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange может выглядеть следующим образом: Now, the Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange might look like this:
Повторное тестирование, переписывание и анализ Retest, rewrite, and reanalyze
Метод теста сейчас обрабатывает не все требуемые случаи. Currently, the test method doesn’t handle all the cases that it should. Если тестируемый метод Debit не смог выдать исключение ArgumentOutOfRangeException, когда значение debitAmount было больше остатка (или меньше нуля), метод теста выдает успешное прохождение. If the method under test, the Debit method, failed to throw an ArgumentOutOfRangeException when the debitAmount was larger than the balance (or less than zero), the test method would pass. Это нехорошо, поскольку метод теста должен был завершиться с ошибкой в том случае, если исключение не создается. This is not good, because you want the test method to fail if no exception is thrown.
Это является ошибкой в методе теста. This is a bug in the test method. Для решения этой проблемы добавим утверждение Fail в конце тестового метода для обработки случая, когда исключение не создается. To resolve the issue, add an Fail assert at the end of the test method to handle the case where no exception is thrown.
Однако повторный запуск теста показывает, что тест теперь оказывается непройденным при перехватывании верного исключения. Rerunning the test shows that the test now fails if the correct exception is caught. Блок catch перехватывает исключение, но метод продолжает выполняться, и в нем происходит сбой на новом утверждении Fail. The catch block catches the exception, but the method continues to execute and it fails at the new Fail assert. Чтобы разрешить эту проблему, добавим оператор return после StringAssert в блоке catch . To resolve this problem, add a return statement after the StringAssert in the catch block. Повторный запуск теста подтверждает, что проблема устранена. Rerunning the test confirms that you’ve fixed this problem. Окончательная версия метода Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange выглядит следующим образом: The final version of the Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange looks like this:
Заключение Conclusion
Усовершенствования тестового кода привели к созданию более надежных и информативных методов теста. The improvements to the test code led to more robust and informative test methods. Но что более важно, в результате был также улучшен тестируемый код. But more importantly, they also improved the code under test.
В этом пошаговом руководстве используется платформа модульных тестов Microsoft для управляемого кода. This walkthrough uses the Microsoft unit test framework for managed code. Обозреватель тестов также может запускать тесты c платформ модульных тестов стороннего производителя, которые имеют адаптеры для обозревателя тестов. Test Explorer can also run tests from third-party unit test frameworks that have adapters for Test Explorer. Дополнительные сведения см. в разделе Установка платформ модульного тестирования сторонних поставщиков. For more information, see Install third-party unit test frameworks.