Как использовать базу данных SQL Server с тестом Coded UI? - PullRequest
0 голосов
/ 07 декабря 2018

Первый день обучения Кодированный тест пользовательского интерфейса для Visual Studio 2017 Enterprise.У меня есть приложение калькулятора, в котором есть несколько тестов, и все они проходят.

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

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

Как добавить базу данных в [Метод теста]?

Вот мой код

Форма входа

    private void btnLogin_Click(object sender, EventArgs e)
    {


        //Try and open a connection with database and run the code
        try
        {

            //Create new instance of sql connection, pass in the connection string for BayOneSurgerySystem.mdf to connect to database.
            SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\davie\Documents\UniWork\Software Engineering\BayOneSurgerySystem1.0\Database\BayOneSystem.mdf;Integrated Security=True;Connect Timeout=30");

            //Create new instance of SQlCommand and pass in a query to be called to retrieve table data for username and passwords aswell as the connection object.
            SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @username and Password = @password", conn);
            //This passes user input into @username and @password
            cmd.Parameters.AddWithValue("@username", txtBoxUsername.Text);
            cmd.Parameters.AddWithValue("@password", txtBoxPassword.Text);

            //Open connection with database
            conn.Open();

            //Create new instance of dataSet to hold the data retrieved from sql query
            DataSet ds = new DataSet();
            //Create new instance of DataAdpater to retrieve the data pass in Sql command
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            //using DataAdapter fill in dataSet wiht data if user input and stored data matches
            da.Fill(ds);

            //Close the connection now data table is filled with username and password
            conn.Close();

            //declare bool, true if there is a match with database and user input
            bool loginSuccess = (ds.Tables[0].Rows.Count == 1);


            //if login success is true then open menu
            if (loginSuccess)
            {
                /*Change state of enum RoleTypes based on result from dataSet Role_ID column.
                 In UserRole table records are as follows: 
                 Role_ID 1 = PracticeManager
                 2 = Doctor
                 3 = Receptionist*/

                //Print role_ID to console to check that is been set.
                Console.WriteLine(ds.Tables[0].Rows[0]["Role_ID"]);

                try
                {
                    //Condition for the switch statement is: check Role_ID from UserRoles table
                    switch (ds.Tables[0].Rows[0]["Role_ID"])
                    {
                        //if the case is that Role_ID for the user logged in is 1 then run the function etc.
                        case 1:
                            {
                                Roles.Role = Roles.RoleType.practiceManager;
                                Console.WriteLine("Role type changed to " + Roles.Role);
                            }
                            break;
                        case 2:
                            {
                                Roles.Role = Roles.RoleType.doctor;
                                Console.WriteLine("Role type changed to " + Roles.Role);
                            }
                            break;
                        case 3:
                            {
                                Roles.Role = Roles.RoleType.receptionist;
                                Console.WriteLine("Role type changed to " + Roles.Role);
                            }
                            break;
                        default:
                            break;

                    }
                }//Switch condition cannot be reached then catch exception and print to console.
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }


                Console.WriteLine("Logged in.");
                FrmMenu menu = new FrmMenu();
                menu.Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("Invalid username or password.", "Error!", MessageBoxButtons.RetryCancel);
                Console.WriteLine("Not logged in");
            }


        }

        //If connection cant be opened diplsay error message and catch exception and print to console
        catch (Exception ex)
        {
            Console.WriteLine(ex);
            MessageBox.Show("Sorry can't connect");
        }



    }

Тестирование закодированного пользовательского интерфейса

 /// Summary description for CodedUITest1
/// </summary>
[CodedUITest]
public class CodedUITest1
{
    public CodedUITest1()
    {
    }

    [TestMethod]
    public void CodedUITestMethod1()
    {

    }


    public TestContext TestContext
    {
        get
        {
            return testContextInstance;
        }
        set
        {
            testContextInstance = value;
        }
    }
    private TestContext testContextInstance;

    public UIMap UIMap
    {
        get
        {
            if (this.map == null)
            {
                this.map = new UIMap();
            }

            return this.map;
        }
    }

    private UIMap map;
}

}

[Источник данных (здесь указана строка подключения?), Метод тестирования]

Спасибо зазаранее!

1 Ответ

0 голосов
/ 08 декабря 2018

Кодированный интерфейс поддерживает несколько типов источников данных, включая CSV, Excel, SQL и XML.Для источников данных CSV и некоторой общей информации о вождении данных, пожалуйста, прочитайте этот ответ здесь на Переполнение стека.Эта (старая) веб-страница представляется основной документацией источников данных.Раздел «Другие типы» таблицы на этой веб-странице ссылается на статью MSDN , в которой приведены строки подключения для нескольких других типов баз данных SQL.

Для данных, хранящихся в SQL Express, используйте DataSource и TestMethod атрибуты, основанные на:

[DataSource("System.Data.SqlClient",
            "Data Source=.\\sqlexpress;Initial Catalog=tempdb;Integrated Security=True",
            "Data", DataAccessMethod.Sequential),
 TestMethod]

Другие типы баз данных SQL используют варианты, описанные выше.

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