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

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Возникла проблема с написанием модульного теста для моей программы рисования фигур. Тип или пространство имен MainForm н

Сообщение Anonymous »


Я новичок в программировании в целом после того, как из-за болезни закончил обучение на третьем курсе, и пытаюсь освоить основы C# для проекта, над которым работаю. Моя проблема связана с базовой программой рисования фигур, использующей приложение формы Windows, которое использует команды/анализ для вывода желаемой формы. Моя программа работает отлично, как задумано, но когда я пытаюсь создать модульный тест для одной функции (нарисовать прямоугольник), используя команду «нарисовать прямоугольник x y, ширину, высоту», но у меня возникают проблемы с тем, что, по моему мнению, нужно делать с тем, как Я структурировал свой код, хотя я не уверен. Любая помощь будет принята с благодарностью и счастливого Нового года! :-)

Я оставлю ниже основные области моего кода, если у кого-то будет время его кратко просмотреть:

с использованием системы; использование System.Drawing; использование System.IO; использование System.Windows.Forms; пространство имен CommandParserApp { публичный статический класс программы { [STAThread] статическая пустота Main() { Приложение.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); MainForm mainForm = новая MainForm(); Application.Run(mainForm); } } общедоступный класс MainForm: Форма { //Объявляем хранилища данных для программы частный CommandParser CommandParser; частный PictureBox холстPictureBox; частная команда TextBoxTextBox; частный ComboBox colorComboBox; частная кнопка выполнитьButton; частная кнопка ClearCanvasButton; public MainForm() // Инициализирует основную форму { ИнициализироватьКомпонент(); CommandParser = новый CommandParser(); } частная пустота InitializeComponent() { // Текстовое поле команды, в которое пользователь может вводить команды командаTextBox = новое текстовое поле { Местоположение = новая точка(10, 10), Ширина = 300, Многострочный = правда }; // Цветной ComboBox, который позволяет пользователю выбрать цвет для своей фигуры colorComboBox = новый ComboBox { Местоположение = новая точка(320, 10), Ширина = 80, DropDownStyle = ComboBoxStyle.DropDownList //Использует стиль раскрывающегося списка в поле со списком. }; colorComboBox.Items.AddRange(new object[] { "Красный", "Синий", "Зеленый" }); //Добавляет 3 цвета в диапазон, из которого пользователь может выбирать. цветComboBox.ВыбранныйИндекс = 0; // Canvas PictureBox, используемый для отображения фигур CanvasPictureBox = новый PictureBox { Местоположение = новая точка(10, 50), Размер = новый размер (400, 300), BackColor = Цвет.Белый }; // Метка инструкций, информирующая пользователя о том, как использовать программу. Инструкции по ярлыкуLabel = новый ярлык { Местоположение = новая точка(10, 360), Авторазмер = правда, Текст = "Инструкции:\n" + "Чтобы нарисовать прямоугольник: нарисуйте прямоугольник шириной x y и высотой\n" + "Чтобы нарисовать круг: нарисуйте круг диаметром x y\n" + «Чтобы нарисовать треугольник: нарисуйте треугольник x1 y1 x2 y2 x3 y3» }; // Примеры команд. Этикетка предназначена только для того, чтобы показать пользователю примеры рабочих команд. Пример меткиCommandsLabel = новая метка { Местоположение = новая точка(10, 440), Авторазмер = правда, Text = "Пример команды:\n" + «Прямоугольник: нарисовать прямоугольник 50 50 100 80\n» + «Круг: нарисуйте круг 200 150 50 50\n» + «Треугольник: нарисуйте треугольник 50 300 200 300 125 200» }; // Кнопка «Выполнить», которая запускает команду и связана с методом «executeButton». Кнопка ExecutButton = новая кнопка { Местоположение = новая точка(420, 10), Текст = «Выполнить» }; ExecuteButton.Click += ExecuteButton_Click; // Кнопка «Очистить холст», позволяет пользователю очистить холст при нажатии кнопки Кнопка ClearCanvasButton = новая кнопка { Местоположение = новая точка(420, 50), Текст = «Очистить холст» }; ClearCanvasButton.Click += ClearCanvasButton_Click; Кнопка loadButton = новая кнопка { Местоположение = новая точка(420, 90), Текст = "Загрузить" }; loadButton.Click += LoadButton_Click; //Вызывает метод при нажатии // Кнопка «Сохранить», которая позволяет пользователю сохранить содержимое поля ввода в текстовый файл. Кнопка saveButton = новая кнопка { Местоположение = новая точка(420, 130), Текст = «Сохранить» }; saveButton.Click += SaveButton_Click; // Добавляем элементы управления в главную форму Controls.Add(commandTextBox); Controls.Add(colorComboBox); Controls.Add(canvasPictureBox); Controls.Add(instructionsLabel); Controls.Add(exampleCommandsLabel); Controls.Add(executeButton); Controls.Add(clearCanvasButton); Controls.Add(loadButton); Controls.Add(saveButton); } частная пустота ExecuteButton_Click (отправитель объекта, EventArgs e) { // Получаем команду из TextBox строковая команда = командаTextBox.Text; // Получаем выбранный цвет из ComboBox Цвет выбранныйЦвет = GetSelectedColor(); // Разбираем и выполняем команду пытаться { командаParser.ExecuteCommand(команда, selectedColor, CanvasPictureBox.CreateGraphics()); } catch (Exception ex) //Выдает ошибку, если команда недействительна { MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка выполнения команды", MessageBoxButtons.OK, MessageBoxIcon.Error); } } Ниже приведен код моего плана тестирования. Область кода с ошибкой — это раздел «MainForm mainForm = new MainForm():» в части «Упорядочить».

с использованием Microsoft.VisualStudio.TestTools.UnitTesting; использование System.Drawing; [ТестКласс] публичный класс DrawingTests { [Метод испытания] общественная пустота DrawRectangleTest() { // Договариваться MainForm mainForm = новая MainForm(); строковая команда = «нарисовать прямоугольник 50 50 50 50»; mainForm.commandTextBox.Text = команда; // Действовать mainForm.ExecuteButton_Click(ноль, ноль); // Утверждать } } Спасибо за любую помощь, если кто-нибудь знает, без сомнения, это какая-то глупость, о которой я забыл с тех пор, как в последний раз пробовал программировать.

РЕДАКТИРОВАТЬ: После добавления ссылки я исправил вышеуказанную ошибку, но теперь получаю ошибки с

mainForm.commandTextBox.Text = команда; // Действовать mainForm.ExecuteButton_Click(ноль, ноль); Похоже, что он останется из соображений безопасности, я не могу использовать его в тестовом классе, еще раз спасибо :)

Ошибки в Visual Studio
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»