Как я могу проверить, отображается ли окно сообщения в модульном тестировании? - PullRequest
1 голос
/ 01 июня 2019

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

public void btnSave_Click(object sender, EventArgs e)
        {
            if(txtFirstName.Text.Trim() != "" && txtLastName.Text.Trim() != "" && txtContact.Text.Trim() != "")
            {
                Regex reg = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); // Only accepting proper email
                Match match = reg.Match(txtEmail.Text.Trim());
                if (match.Success)
                { using (SqlConnection sqlCon = new SqlConnection(connectionString)) // Connecting info to database
                    {
                        sqlCon.Open();
                        SqlCommand sqlCmd = new SqlCommand("ContactAddorEdit", sqlCon);
                        sqlCmd.CommandType = CommandType.StoredProcedure;
                        sqlCmd.Parameters.AddWithValue("@PhoneBookID", PhoneBookID); //connecting each value to database
                        sqlCmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@LastName", txtLastName.Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@Contact", txtContact.Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim());
                        sqlCmd.Parameters.AddWithValue("@Address", txtAddress.Text.Trim());
                        sqlCmd.ExecuteNonQuery(); // Executing the query in database
                        MessageBox.Show("Submitted successfully"); // Showing message when success
                        Clear(); // Clearing the form
                        GridFill();// Refreshing the table
                    }
                }
                else
                {
                    MessageBox.Show(" Please enter a valid Email"); // Showing message when email is not valid
                }
            }
            else
            {
                MessageBox.Show("Please fill Mandatory fields"); // If no input this message will show
            }

        }

Таким образом, если текстовое поле получило пустую строку, появится окно с сообщением "Пожалуйста, заполните обязательные поля"

и вот тест, который я пытаюсь написать

        [TestMethod]
        public void TestMethod1()
        {
            Form1 form1 = new Form1();
            form1.txtFirstName.Text = "";
            Assert.IsTrue(MessageBox.Show("Please fill Mandatory fields") ;
        }

Какой тип утверждения и как следует использовать и как его написать? Могу ли я проверить это так? Спасибо

1 Ответ

1 голос
/ 01 июня 2019

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

Подумайте о том, что вы пытаетесь проверить здесь. Test1 проверяет, что форма правильно проверит, заполнены ли обязательные поля. Создайте метод для этой логики и выполните его модульное тестирование:

public bool MandatoryFieldsArePopulated()
{
     return txtFirstName.Text.Trim() != "" 
         && txtLastName.Text.Trim() != "" 
         && txtContact.Text.Trim() != "";
}

это легко проверить с помощью модульных тестов. Тогда первая строка метода btnSave_Click будет

if (MandatoryFieldsArePopulated())

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

...