Модульное тестирование кнопок C#

Я хочу проверить, работает ли моя кнопка так, как ожидалось. Но я даже не могу протестировать этот простой пример:

public int k = 0;

public void button3_Click(object sender, EventArgs e)
{
    k = 1;
}

Модульный тест:

[TestMethod]
public void ButtonClick3_ret1()
{
    //arrange
    int x;
    int expected = 1;

    //act
    int actual;
    Form c = new Form();
    c.button3.PerformClick();
    actual = c.k;

    //assert
    Assert.AreEqual(expected,actual );
}

В чем вопрос?

Broots Waymb 14.12.2018 22:29

Как заставить его работать?

vladtf 14.12.2018 22:32

Что насчет того, что не работает? Вы не предоставили никаких подробностей о том, что не так / сломано / неожиданно / ошибки / и т. д.

Broots Waymb 14.12.2018 22:34

После нажатия кнопки 3 значение k по-прежнему остается равным 0 для тестера агрегата.

vladtf 14.12.2018 22:36

Вы установили точки останова в событии button3_Click, чтобы увидеть, не сработает ли оно? Вы уверены, что это действительно связано с событием button3Click?

Broots Waymb 14.12.2018 22:38

@BrootsWaymb с вероятностью 99%, что он не подключен, так как он не упомянул никаких исключений или других проблем.

nemanja228 14.12.2018 22:39

Итак, как мне проверить, подключен ли провод?

vladtf 14.12.2018 22:40

В коде ошибок нет, просто возвращается неверное значение.

vladtf 14.12.2018 22:41

У вас есть форма под названием «Форма»? Потому что это не будет компилироваться с новым System.Windows.Forms.Form

Crowcoder 14.12.2018 23:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
1 094
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно фактически подписать ваш button3 на событие, чтобы событие действительно было запущено.

Нажмите кнопку в своем конструкторе (при условии, что вы используете VS), затем нажмите на значок молнии в окне «Свойства» и выберите обработчик событий из раскрывающегося списка рядом с «Щелчком».

Без подписки на событие ваш элемент управления не знает, что он должен делать при нажатии (в C# нет ничего, что могло бы автоматически «сопоставить» button3.Click с button3_Click).

properties window

Это работает, потому что вы уже создали что-то, на что Click можно подписаться. Вы также можете автоматически сгенерировать что-то вроде button3_Click, дважды щелкнув вашу кнопку в дизайнере, если вы еще не написали для него код (иначе вы получите что-то вроде button3_Click_1).

Не могли бы вы это проверить?

vladtf 14.12.2018 22:54

Я просто поставил c.Show (); и вернул правильный ответ. Изображение для модульного теста

Другие вопросы по теме