Testy jednostkowe dla SqlConnection

0

Hej, mam takie dwie metody co łączą się z serwerem i wysyłają doń komendy w formacie string, komendy te tworzą nową bazę i tabelę w niej.

Np.

public void MigrateTable()
        {
            string db = _config.databaseName;
            string table = _config.tableName;

            try
            {
                using (SqlConnection connection = GetConnection(_config.connectionString))
                {
                    connection.Open();

                    ExecuteSqlCommand(@"
                        CREATE TABLE " + db + @".dbo." + table + @"(
                        [Index] INT NOT NULL PRIMARY KEY,
                        Name VARCHAR(255) NOT NULL,
                        Visits INT NULL,
                        Date DATETIME NOT NULL
                        )", connection);

                    connection.Close();
                }
            }
            catch (Exception e)
            {
               //cw
            }
        }

Rozglądałem się po sieci jak i czy jest w ogóle sens pisania testów jednostkowych dla takich metod (które jedynie się łączą z bazą danych i wysyłają komendy nie otrzymując nic zwrotnie).

Wpadłem na ten artykuł z 2007 w którym to autor przedstawia szereg testów. Ciekaw jestem co Wy o nim sądzicie? Trochę trąci testami integracyjnymi.

Alternatywnie znalazłem tą odpowiedź na stackexchange.

Jest też ciekawa odpowiedź na SO choć przyznaję że nie do końca rozumiem co tu jest testowane.

0

Czyli chcesz przetestować jednostkowo integracje?

3

Autor artykułu napisał testy integracyjne, nie jednostkowe - różnica polega na tym, że do jednostkowych nie potrzeba stawiać odrębnych zależności (np. bazy danych), a do integracyjnych już tak.

Ogólnie nie brałbym na poważnie artykułów nikogo, kto coś takiego uważa za wartościowy test:

    [Test]
    public void CreateCustomer()
    {
        string name =  “Customer Test”;
        string email = “[email protected]”;
        Customer c = new Customer(name, email);
        Assert.AreEqual(name, c.Name);
        Assert.AreEqual(email, c.Email);
    }

... ponieważ ten test nic tak naprawdę nie sprawdza - nie ma tutaj żadnych przypadków skrajnych, nie ma żadnej logiki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1