Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Тесты по си шарп

Тест с ответами на тему программирование на языке C#

А1. Какой тип переменной используется в коде: int a = 5;

Знаковое 8-бит целое

Знаковое 64-бит целое

Знаковое 32-бит целое (+)

А2. Что делает оператор «%»

Возвращает процент от суммы

Возвращает остаток от деления (+)

Возвращает тригонометрическую функцию

Ни чего из выше перечисленного.

А3. Что сделает программа выполнив следующий код: Console.WriteLine(«Hello, World!»);

Напишет на новой строчке Hello, World! (+)

Напишет Hello, World!

Удалит все значения с Hello, World!

Вырежет слово Hello, World! из всего текста

А4. Как сделать инкрементацию числа

А5. Как сделать декрементация числа

А6. Как найти квадратный корень из числа x

А7. Обозначения оператора «НЕ»

A8. Обозначение оператора «ИЛИ»

A9. Обозначение оператора «И»

Все выше перечисленные.

А10. Чему будет равен с, если int a = 10; int b = 4; int c = a % b;

А11. Чему будет равен с, если int a = 10; int b = 4; bool c = (a == 10 && b == 4);

А11. Чему будет равен с, если int a = 0; int c = a—;

А12. Чему будет равен с, если int a = 0; int c = —a;

A15. Чему равен d, если int a = 0; int b = a++; int c = 0; int d = a + b + c + 3;

А16. Для чего нужны условные операторы

Чтобы устанавливать условия пользователю

Для ветвления программы (+)

Для оптимизации программы

А17. Что вернет функция Termin после выполения. Код:

if (a != 5) return a + b;

A18. Как называется оператор «?:»

А19. Что такое массив

Набор однотипных данных, которые располагаются в памяти последовательно друг за другом (+)

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

Набор данных типа int (32-бит целое)

A20. Какие бывают массивы ?

Сложные и простые

Одномерные и многомерные (+)

Резиновые и статичные

A20. Что такое цикл и для чего они нужны

Циклы нужны для многократного запуска программы

Циклы нужны для многократного выполнения кода. (+)

Циклы нужны для многократного размещения данных.

Циклы нужны чтобы выполнить код без ошибок.

A21. Какие бывают циклы?

Большие и маленькие

Цикл, Форич, Двойной цикл, Многократный

for, while, do-while, foreach (+)

ref, out, static, root

A22. Какой оператор возвращает значение из метода ?

veni
return (+)
out
end
A23. Что такое константа ?

Переменная типа string

Переменная которая может быть изменена в любое время.

Переменная значение которой нельзя изменить. (+)

A24. Что обозначает ключевое слово var ?

Устраивает войну между программами

Обозначает что переменная без явного типа данных (+)

Обозначает что переменная имеет явный тип данных

Тестирование и отладка программного обеспечения (ПО)

Тестирование и отладка – два противоположных, но взаимосвязанных процесса, выполняются многократно. В этой статье дается только общее представление об этих процессах (скорее на примере структурного программирования). Понятно, что требования к тестированию игр или управлению воздушными полетами принципиально разные.

Основные термины

Тестирование (testing) – процесс выполнения программы с целью найти ошибки. Может выполняться как с компьютером, так и без него (общий термин).
Доказательство (proof) – попытка найти в программе ошибки путем доказательств на основе математических теорем о правильности программы безотносительно к внешней программной среде (вид тестирования).
Контроль (verification) – попытка найти ошибки, выполняя программу в тестовой или моделируемой среде (вид тестирования).
Испытание (validation) – попытка найти ошибки, выполняя программу в заданной программной среде (вид тестирования).
Аттестация (certification) – авторитетное подтверждение правильности программы (итоговое тестирование, для критичного ПО).

Отладка (debugging) – средство установления точной природы ошибок, процесс, противоположный тестированию, ведет к устранению ошибок.

Виды тестирования

Автономное тестирование, тестирование модуля (module testing) – контроль отдельного модуля в изолированной среде (например, с помощью ведущей программы), инспекция текста модуля на сессии программистов, которая иногда дополняется математическим доказательством правильности модуля.
Тестирование сопряжений (integration testing) – контроль сопряжений между частями системы, как между компонентами в комплексе, так и между модулями отдельного компонента (например, у заглушки).
Комплексное тестирование (system testing) – контроль и/или испытание системы по отношению к исходным целям. Является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания в реальной среде.

ПРИНЦИПЫ (аксиомы) тестирования

  1. Хорош тот тест, для которого высока вероятность обнаружения ошибки.
  2. Главная проблема тестирования – решить, когда закончить (кончаются деньги и время).
  3. Невозможно тестировать собственную программу.
  4. Необходимая часть тестов – описание выходных документов.
  5. Избегайте не воспроизводимых тестов.
  6. Готовьте тесты как для правильных, так и для неправильных данных.
  7. Не тестируйте «с лету».
  8. Детально изучайте результаты каждого теста.
  9. По мере обнаружения все большего числа ошибок в некотором модуле или программе, растет вероятность обнаружения в ней еще большего числа ошибок.
  10. Тестируют программу — лучшие умы.
  11. Считают тестируемость главной задачей разработчиков программы.
  12. Не изменяй программу, чтобы облегчить тестирование.
  13. Тестирование должно начинаться с постановки целей.

Мои примечания к аксиомам тестирования:

  1. Не гордитесь тестом, который не обнаружил ни одной ошибки.
  2. При планировании разработки выделяйте не менее 50% времени на тестирование и отладку, тогда у вас появится шанс закончить работу в срок.
  3. Другой человек не будет испытывать уважения к вашим способностям писать правильный код. Поэтому, когда нет возможности передать тестирование другому разработчику, следует отстраниться от своей разработки и отнестись к ней как чужой (такой психологический настрой).
  4. Если вы не описали заранее ожидаемые результаты, то даже неумышленно можно истолковать фактические результаты как верные.
  5. Не воспроизводимые тесты – тесты, которые нельзя повторить нужное количество раз.
  6. Обязательно в наборе тестов должны быть входные данные, которые могут не соответствовать смыслу задачи (смотри пример с формулой Герона), либо формату вводимых данных.
  7. Тестирование «с лету» подразумевает, что тесты не следует придумывать после написания кода, это следует делать заранее.
  8. Группируйте ошибки тестирования, постарайтесь понять их природу.
  9. Рекомендация относится к коллективной разработке, когда менее опытный программист делает много ошибок в своем коде программы.
  10. Тестирование – творческий процесс, автор тестов должен понимать технологию тестирования и иметь собственный опыт программирования.
  11. Например, методология структурного программирования обеспечивает обозримость ПО за счет деления его на модули и стандартизации их взаимодействия. Полезными свойствами программного кода является осмысленный выбор идентификаторов объектов наличие комментариев.
  12. Вы можете изменить программу в процессе отладки. Важно – не забыть восстановить полезный код.
  13. Для каждого процесса тестирования начинайте с определения цели.

Связь процесса тестирования с процессом проектирования ПО

В процессе проектирования ПО обычно принимаются следующие решения:

  1. Требования к ПО (область применения, назначение, условия эксплуатации);
  2. Цели создания ПО (решение определенных задач);
  3. Внешние спецификации «что должно делать ПО» (функции и требования к ним)
  4. Архитектура системы;
  5. Структура программы (разбиение на программные модули);
  6. Внешние спецификации модуля (функции модуля);
  7. Логика модуля (алгоритмы);

Как вы видите, процесс непосредственного кодирования не включен в проектирование.

Процессы тестирования (в скобках указаны номера связанных с ними процессов проектирования):

1. Автономный тест (6, 7)
2. Тест сопряжений (4, 5)
3. Тест функций (3)
4. Комплексный тест (2)
5. Тест приемлемости (1)

Читать еще:  Одномерные массивы си шарп

Тестирование ПО включает:

1) постановку задачи;
2) проектирование тестов;
3) написание тестов;
4) тестирование тестов;
5) выполнение тестов;
6) изучение результатов тестирования.

Два крайних подхода к проектированию тестов:

«Черный ящик» — недостижимый идеал: проверить все возможные комбинации и значения входных данных.
«Белый ящик» — связывание теста только с логикой программы:

  • Каждая команда – хотя бы один раз;
    Каждый условный переход – в каждом направлении хотя бы раз;
    Цикл – ни разу, один раз, максимальное число раз.

Две стратегии тестирования: восходящее и нисходящее

Восходящее тестирование – от отдельных модулей по мере их готовности (в том числе отдельных функций) к тестированию форм и ПО в целом.
Нисходящее тестирование начинается с тестирования структуры ПО и с последующим тестированием модулей.
Реально используются комбинации обеих стратегий в зависимости от сложности ПО.

Критерии выбора стратегии тестирования

Время до полной сборки программы
Время реализации скелета программы
Имеющийся инструментарий проектирования
Мера параллелизма ранних этапов реализации
Возможность проверки в реальных условиях эксплуатации

Отладка

После цикла тестирования начинается цикл отладки программы.

Самое сложное – понять по результатам тестирования причину ошибки. Ошибка в модуле (например, в методе обработки некоторого события) может быть связана как с логикой обработки данных, так и с ошибкой сопряжений (при передаче параметров). Ошибки вызова форм приложения могут быть связаны с неверно выбранным способом их взаимодействия.

Далее выдвигается гипотеза, которая проверяется после изменения программного кода.

Важно, что после этого следует снова выполнить (полное или частичное) тестирование, так как любое изменение кода может внести новые ошибки.

Тест по дисциплине Программирование на языке С#

Как организовать дистанционное обучение во время карантина?

Помогает проект «Инфоурок»

Инструкция по выполнению заданий № 1-18: Выберите букву, соответствующую правильному варианту ответа и запишите её в бланке ответов. Например,

Типы данных в языке C # принято классифицировать как:

(Ответ считается верным, если отмечены все правильные варианты ответов)

B) определенные программистом

D) встроенные (базисные)

E) сложные (структурные)

F) правильных ответов нет

Укажите правильный порядок следования приоритетов бинарных операций:

(Отметьте один правильный вариант ответа.)

A ) арифметические, логические, отношения

B) отношения, логические, арифметические

C) арифметические, отношения, логические

D ) правильных ответов нет

Отличительной особенностью каких языков программирования является их ориентация не на систему команд той или иной ЭВМ, а на систему операторов, характерных для записи определенного класса алгоритмов?

(Отметьте один правильный вариант ответа.)

А) языков программирования низкого уровня

B) языков программирования высокого уровня

C) языков программирования сверхвысокого уровня

D ) правильных ответов нет

Что используют все языки программирования высокого уровня для предоставления программисту простого и легкого доступа к различным объектам?

(Отметьте один правильный вариант ответа.)

D ) правильных ответов нет

Что понимают под языком программирования (ЯП)?

А) язык, предназначенный для решения определенного класса задач (проблем)

B) правила представления данных и записи алгоритмов их обработки, которые автоматически выполняются ЭВМ

C) язык, предназначенный для создания пакетов прикладных программ, в том числе для современных операционных систем

D ) правильных ответов нет

В результате выполнения фрагмента программы

double x = 0, y = 0, z = x / y ;

(Отметьте один правильный вариант ответа.)

A ) ошибки не будет и значение переменной z будет равно null

B) возникнет ошибка на этапе компиляции программы

C ) возникнет ошибка на этапе выполнения программы

D) ошибки не будет и значение переменной z будет равно Infinity

E) ошибки не будет и значение переменной z будет равно NaN

F) ошибки не будет и значение переменной z будет равно 0

G) правильных ответов нет

Как называется именованная спецификация одного или более столбцов (для каждого столбца указывается имя, а также его тип или домен)?

(Отметьте один правильный вариант ответа.)

А) строчный тип данных

B ) объектный тип данных

C ) комбинированный тип данных

D ) правильных ответов нет

Что понимается под наследованием типов?

(Отметьте один правильный вариант ответа.)

А) однородная масса разрядов, имеющая какую либо структуру

B) возможность дисциплинированного создания новых типов на основе уже определенных

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

D ) правильных ответов нет

Что из перечисленного не относится к наиболее распространенным конструируемым типам данных?

(Отметьте один правильный вариант ответа.)

B) тип множества

D) тип распределения

E ) правильных ответов нет

Что представляет собой открытый массив?

(Отметьте один правильный вариант ответа.)

А) фактический параметр подпрограммы, описывающий базовый тип элементов массива, но не определяющий его размерности и границы

B) формальный параметр подпрограммы, описывающий базовый тип элементов массива и определяющий его размерность и границы

C) формальный параметр подпрограммы, описывающий базовый тип элементов массива, но не определяющий его размерности и границы

D) правильных ответов нет

Каким способом параметр массив всегда передается в функцию?

(Отметьте один правильный вариант ответа.)

B) по направлению

D) правильных ответов нет

Что понимается под классом в объектно-ориентированном программировании (ООП)?

(Отметьте один правильный вариант ответа.)

А) процедуры и функции любого языка программирования

B) структурный тип данных, который включает описание полей данных, процедур и функций, работающих с этими полями данных

C) списки передаваемых параметров, типы функции

D) правильных ответов нет

Какие синтаксические правила объявления переменных являются корректными:

Е) правильных ответов нет

Какие типы в языке C# относятся к значимым:

(Ответ считается верным, если отмечены все правильные варианты ответов)

H ) правильных ответов нет

Определение класса в C # и других объектных языках содержит:

(Ответ считается верным, если отмечены все правильные варианты ответов)

G ) правильных ответов нет

Какие типы в языке C# относятся к ссылочным:

(Ответ считается верным, если отмечены все правильные варианты ответов)

H ) правильных ответов нет

Какой из перечисленных типов языка C # не относится к значимым:

(Отметьте один правильный вариант ответа.)

B логический тип

C) тип, задающий структуру

D) тип, задающий массив

Е) все арифметические типы

F ) текстового документа .

Отметьте истинные высказывания:

(Ответ считается верным, если отмечены все правильные варианты ответов)

А) память, отводимая переменной значимого типа, принадлежит переменной и ни с какой другой переменной не разделяется

B) память, отводимая переменной ссылочного типа, принадлежит переменной и ни с какой другой переменной не разделяется

C) значения переменных значимого типа нельзя изменять

D) для ссылочных типов значение задается ссылкой на некоторый объект, расположенный в динамической памяти — «куче»

Е) несколько ссылочных переменных могут ссылаться на один и тот же объект и разделять его значения

F) правильных ответов нет

Инструкция по выполнению заданий № 19-25: В соответствующую строку бланка ответов запишите ответ выполненного задания, окончание предложения или пропущенные слова

Перевод программы с языка программирования на язык машинных кодов называется …

Процесс исправления ошибок в программе, при котором цель исправить все ошибки не ставится, называется…

Процесс, посредством которого проверяется правильность программы называется …

Выражения строятся из операндов — …, …, …, — объединенных знаками операций и скобками

констант, переменных, функций

Под перегрузкой операции понимается существование нескольких реализаций одной и той же …

Читать еще:  Массив строк паскаль

Метод класса называется … , если существует несколько реализаций этого метода.

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

Выберите книгу со скидкой:

ЕГЭ. География. Новый полный справочник для подготовки к ЕГЭ

350 руб. 163.00 руб.

350 руб. 171.00 руб.

ЕГЭ-2019. География. Теория и практика

350 руб. 213.00 руб.

ОГЭ. География. Большой сборник тематических заданий для подготовки к основному государственному экзамену

350 руб. 197.00 руб.

География. 10-11 классы. Атлас. (Традиционный комплект) (РГО)

350 руб. 106.00 руб.

География. 7 класс. Атлас. (Традиционный комплект)(РГО)

350 руб. 106.00 руб.

География. 5 класс. Атлас. (Традиционный комплект).

350 руб. 106.00 руб.

География. 10-11 классы. Контурные карты. (Традиционный комплект) (РГО)

350 руб. 59.00 руб.

География. 6 класс. Атлас. (Традиционный комплект)(РГО)

350 руб. 106.00 руб.

География. Материки, океаны, народы и страны. 7класс. Атлас

350 руб. 184.00 руб.

География. 9 класс. Контурные карты. (Традиционный комплект) (РГО)

350 руб. 59.00 руб.

География. Начальный курс географии. 6класс. Контурные карты

350 руб. 101.00 руб.

БОЛЕЕ 58 000 КНИГ И ШИРОКИЙ ВЫБОР КАНЦТОВАРОВ! ИНФОЛАВКА

Инфолавка — книжный магазин для педагогов и родителей от проекта «Инфоурок»

Бесплатный
Дистанционный конкурс «Стоп коронавирус»

  • Тусинова Марина Николаевна
  • Написать
  • 2474
  • 07.04.2017

Номер материала: ДБ-332882

Добавляйте авторские материалы и получите призы от Инфоурок

Еженедельный призовой фонд 100 000 Р

  • 07.04.2017
  • 360
  • 07.04.2017
  • 1027
  • 07.04.2017
  • 649
  • 07.04.2017
  • 344
  • 07.04.2017
  • 257
  • 07.04.2017
  • 268
  • 07.04.2017
  • 431

Не нашли то что искали?

Вам будут интересны эти курсы:

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.

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

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Модульное тестирование в Visual Studio

Модульное тестирование (или Unit-тестирование) предназначено для проверки правильности выполнения небольшого блока кода, решающего свою конкретную задачу. В статье рассказывается, как проводить в модульное тестирование в Visual Studio. Разработка ведётся на языке C#.

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

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

Создадим в Visual Studio новый проект Visual C# -> Библиотека классов. Назовём его MathTaskClassLibrary.

Class1 переименуем в Geometry.

В классе реализуем метод, вычисляющий площадь прямоугольника. Для демонстрации остановимся на работе с целыми числами. Код программы приведён ниже.

Площадь прямоугольника, как известно, это произведение двух его сторон.

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

Чтобы выполнить unit-тестирование, необходимо в рамках того же самого решения создать ещё один проект соответствующего типа.

Правой кнопкой щёлкните по решению, выберите “Добавить” и затем “Создать проект…”.

В открывшемся окне в группе Visual C# щёлкните “Тест”, а затем выберите “Проект модульного теста”. Введите имя проекта MathTaskClassLibraryTests и нажмите “ОК”. Таким образом проект будет создан.

Перед Вами появится следующий код:

Директива [TestMethod] обозначает, что далее идёт метод, содержащий модульный (unit) тест. А [TestClass] в свою очередь говорит о том, что далее идёт класс, содержащий методы, в которых присутствуют unit-тесты.

В соответствии с принятыми соглашениями переименуем класс UnitTest1 в GeometryTests.

Затем в References проекта необходимо добавить ссылку на проект, код которого будем тестировать. Правой кнопкой щёлкаем на References, а затем выбираем “Добавить ссылку…”.

В появившемся окне раскрываем группу “Решение”, выбираем “Проекты” и ставим галочку напротив проекта MathTaskClassLibrary. Затем жмём “ОК”.

Также в коде необходимо подключить с помощью директивы using следующее пространство имён:

Займёмся написание теста. Проверим правильно ли вычисляет программа площадь прямоугольника со сторонами 3 и 5. Ожидаемый результат (правильное решение) в данном случае это число 15.

Переименуем метод TestMethod1() в RectangleArea_3and5_15returned(). Новое название метода поясняет, что будет проверяться (RectangleArea – площадь прямоугольника) для каких значений (3 и 5) и что ожидается в качестве правильного результата (15 returned).

Тестирующий метод обычно содержит три необходимых компонента:

  1. исходные данные: входные значения и ожидаемый результат;
  2. код, вычисляющий значение с помощью тестируемого метода;
  3. код, сравнивающий ожидаемый результат с полученным.

Соответственно тестирующий код будет таким:

Для сравнения ожидаемого результата с полученным используется метод AreEqual класса Assert. Данный класс всегда используется при написании unit тестов в Visual Studio.

Теперь, чтобы просмотреть все тесты, доступные для выполнения, необходимо открыть окно “Обозреватель тестов”. Для этого в меню Visual Studio щёлкните на кнопку “ТЕСТ”, выберите “Окна”, а затем нажмите на пункт “Обозреватель тестов”.

В студии появится следующее окно:

В данный момент список тестов пуст, поскольку решение ещё ни разу не было собрано. Выполним сборку нажатием клавиш Ctrl + Shift + B. После её завершения в “Обозревателе тестов” появится наш тест.

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

Для этого нажмём правой кнопкой мыши на его имени и выберем “Выполнить выбранные тесты”.

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

Изменим код метода RectangleArea, вычисляющего площадь прямоугольника, чтобы сымитировать провал теста и посмотреть, как поведёт себя Visual Studio. Прибавим к возвращаемому значению 10.

Как Вы видите, красный круг с крестиком показывает провал модульного теста, а ниже указано, что при проверке ожидалось значение 15, а по факту оно равно 25.

Таким образом мы рассмотрели на практике модульное тестирование программы на языке C# в Visual Studio.

Вы можете скачать исходник решения по ссылке ниже или перейти в репозиторий данного проекта на GitHub:

Тестирование программного обеспечения – рекомендации

Приведём правило, которым следует руководствоваться при написании и проведении тестов для оценки правильного функционирования программ.

Удобнее всего будет рассмотреть пример основанный на математике.

Так или иначе тестируемый метод или функция (или вся программа в целом) имеет свою область допустимых входных значений. Для проверки правильности работы метода достаточно провести тестирование метода на входных значениях начала и конца области допустимых значений (ОДЗ), одного значения из внутренней части области, а также -1 от левой и +1 от правой границы области.

Например, если ОЗД функции F – это отрезок [0; 100], то для проверки корректности работы функции достаточно протестировать следующие варианты: F(0), F(50) [не обязательно 50, можно взять любое число из внутренней части ОДЗ], F(100), F(-1), F(101).

Читать еще:  Паскаль реферат азаша

BestProg

Пример создания Unit-теста в MS Visual Studio 2010 — C#

В данной теме описывается пошаговый процесс создания простейшего Unit-теста в системе Microsoft Visual Studio 2010 ( C# ) для приложения типа Console Application . Используя данный пример, можно научиться создавать собственные Unit-тесты. Пример также демонстрирует использование класса Assert для проведения тестирования работы функций.

Содержание

Условие задачи

Для приложения типа Console Application разработать Unit-тест, который тестирует работу функции Min() , которая определяет максимальный элемент из трех чисел.

Для функции Min() установить метод тестирования TestMin() . Проверить работу функции.

Выполнение

1. Создать приложение по шаблону Console Applicaiton

Запустить на выполнение MS Visual Studio 2010. Для создания проекта по шаблону Console Application нужно вызвать следующую последовательность команд:

В результате откроется окно New Project . В окне нужно выбрать шаблон Console Application как изображено на рисунке 1. Шаблон выбирается во вкладке Visual C# .

Рис. 1. Окно «New Project» . Выбор приложения типа Console Application

2. Подготовка текста модуля Program.cs

2.1. Добавить функцию Min() в текст модуля

В тело класса Program нужно добавить текст функции Min() .

Функция объявляется как общедоступная ( public ) и статическая ( static ). Текст функции Min()

Рис. 2. Вид окна MS Visual Studio 2010, модуль «Program.cs»

2.2. Сделать класс Program общедоступным ( public )

Для того, чтобы иметь доступ к функции Min() класса Program нужно сделать этот класс общедоступным. Для этого, перед объявлением класса нужно определить ключевое слово public .

После этого тестируемая программа готова.

3. Листинг тестируемой программы

На данный момент листинг тестируемой программы следующий:

Поскольку, эта программа будет тестироваться из другого модуля тестирования, то в функции Main() большее ничего вводить не нужно. Потому что, в соответствии с условием задачи, нужно протестировать работу функции Min() . А это уже будет осуществляться из модуля тестирования. На данный момент наша программа готова к тестированию.

4. Создание теста

Тест создается отдельным проектом ( Project ) в решении ( Solution ). Тестируемая программа не знает об этом. Программа, которая будет тестировать (тестирующая программа) вызовет функции тестируемой программы. В нашем случае программа-тест будет вызывать функцию

4.1. Добавление нового проекта к решению

Для данного решения ( Solution ) нужно добавить новый проект с помощью команды

Окно создания нового проекта изображено на рисунке 3.

Рис. 3. Окно создания проекта типа Test Project

В окне выбирается группа шаблонов Visual C# -> Test . Из отображенных шаблонов выбирается шаблон проекта «Test Project» . В поле «Name» указывается имя проекта, который будет тестировать нашу программу. Нужно задать, например, TestMinApp . Проект размещается в отдельной папке «E:TestMinApp» .

Рис. 4. Текст модуля UnitTest1.cs . Окно утилиты Solution Explorer с отображенными проектами TestMinApp и MinApp

4.2. Структура решения

Как видно из рисунка 4, утилита Solution Explorer отображает структуру решения ( Solution Items ), которое содержит два проекта:

  • проект MinApp . Это проект, созданный по шаблону Console Application с функцией Min() , которую нужно протестовать;
  • проект TestMinApp . Этот проект предназначен для тестирования функций проекта MinApp . Программный код, который тестирует функцию Min() , будет вноситься в файл проекта UnitTest1 проекта TestMinApp .

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

4.3. Текст файла «UnitTest1.cs» . Атрибуты [TestMethod] и [TestClass]

В проекте TestMinApp главный интерес представляет файл теста UnitTest1.cs . В этом файле размещаются методы, которые будут тестировать функции проекта MinApp . Проект TestMinApp может содержать любое количество файлов, которые содержат тесты (например, UnitTest2.cs , UnitTest3.cs и т.д.).

Листинг файла UnitTest1.cs , сформированный MS Visual Studio 2010, следующий:

Как видно из вышеприведенного кода, файл содержит класс с именем UnitTest1 . В классе есть общедоступный ( public ) метод с именем TestMethod1() . Перед реализацией метода TestMethod1() размещается атрибут [ TestMethod ]. Это означает, что в тело метода нужно вписать код, который будет тестировать функции проекта MinApp .

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

4.4. Выполнение изменений в тексте модуля UnitTest1 . Изменение названия тестирующего метода

Допускается изменять названия методов и добавлять новые методы, которые помечены атрибутом [TestMethod] в модуле UnitTest1.cs . Учитывая это, в тексте модуля UnitTest1.cs нужно метод TestMethod1() переименовать на TestMin() .

После выполненных изменений, сокращенный текст модуля файла UnitTest1.cs будет иметь вид:

4.5. Подключение проекта MinApp к проекту TestMinApp

Чтобы иметь доступ к функции Min() (проект MinApp ) из проекта TestMinApp , нужно подключить пространство имен в котором размещается эта функция.

Для этого прежде всего нужно вызвать контекстное меню для проекта TestMinApp . Затем в контекстном меню нужно вызвать команду «Add Reference…» (рисунок 5).

Рис. 5. Команда «Add Referencse…»

В результате откроется окно «Add Reference» , в котором нужно выбрать проект MinApp .

Рис. 6. Окно «Add Reference» . Подключение проекта MinApp

После выполненных действий функции проекта MinApp будут доступны для использования в проекте TestMinApp .

Рис. 7. Вкладка References с подключенным проектом MinApp

4.6. Внесение изменений в текст модуля UnitTest1.cs
4.6.1. Добавление пространства имен MinApp в модуль UnitTest1.cs

На этом етапе в модуль UnitTest1.cs нужно добавить пространство имен MinApp с помощью директивы using :

4.6.2. Текст метода TestMin()

В тексте метода TestMin() нужно ввести следующий код:

4.7. Текст модуля UnitTest1.cs

Текст всего модуля UnitTest1.cs имеет следующий вид:

5. Запуск теста на выполнение и проверка результата тестирования

В Microsoft Visual Studio 2010 для работы с Unit -тестами реализовано специальное меню команд, которое называется Test .

Чтобы запустить тест на выполнение, нужно выбрать одну из команд

как показано на рисунке 8.

Рис. 8. Вызов команды запуска тестирования и просмотр результата

После запуска теста, результат можно просмотреть в нижней части в окне Test Results . Как видно из рисунка, тест не сдан. Это логично, так как в функции Assert.AreEqual() мы сравниваем числа 2 и 3, которые различны между собой. Здесь специально введено число 2 вместо числа 3.

Если вместо числа 2 ввести правильный ответ – число 3 (минимум между 3, 4, 5), то тест будет сдан (рисунок 9). В этом случае текст метода TestMin() будет следующий:

Окно результата изображено на рисунке 9.

Рис. 9. Результат тестирования для случая, если ввести правильный ответ

Теперь можно сделать вывод о том, что функция Min() для данного случая работает правильно.

6. Итог. Взаимодействие между проектами

В данной работе в решении ( Solution ) сформированы два проекта. Один проект MinApp содержит функцию Min() , которую нужно протестировать. Второй проект TestMinApp содержит тестирующие методы.

В Microsoft Visual Studio 2010 каждый из проектов запускается с помощью разных команд меню. Так, проект MinApp запускается стандартным способом из меню Run . А проект TestMinApp запускается из специального меню Test .

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×