Udostępnij za pośrednictwem


Przewodnik: definiowanie źródła danych przy użyciu pliku konfiguracji

W tym przewodniku pokazano, jak używać źródła danych zdefiniowanego w pliku app.config do testowania jednostkowego. Dowiesz się, jak utworzyć plik app.config , który definiuje źródło danych, które może być używane przez klasę DataSourceAttribute . Zadania przedstawione w tym przewodniku obejmują następujące elementy:

  • Tworzenie pliku app.config.

  • Definiowanie sekcji konfiguracji niestandardowej.

  • Definiowanie parametry połączenia.

  • Definiowanie źródeł danych.

  • Uzyskiwanie dostępu do źródeł danych przy użyciu DataSourceAttribute klasy .

Uwaga

DataSourceAttribute jest obecnie obsługiwany tylko w programie .NET Framework.

Wymagania wstępne

Aby ukończyć ten przewodnik, potrzebne są:

  • Visual Studio Enterprise

  • Program Microsoft Access lub Program Microsoft Excel udostępnia dane dla co najmniej jednej z metod testowych.

  • Rozwiązanie programu Visual Studio zawierające projekt testowy.

Dodawanie pliku app.config do projektu

  1. Jeśli projekt testowy ma już plik app.config , przejdź do sekcji Definiowanie konfiguracji niestandardowej.

  2. Kliknij prawym przyciskiem myszy projekt testowy w Eksplorator rozwiązań, a następnie wybierz polecenie Dodaj>nowy element.

    Zostanie otwarte okno Dodawanie nowego elementu . Jeśli nie widzisz wszystkich szablonów elementów, wybierz pozycję Pokaż wszystkie szablony, a następnie wybierz szablon elementu.

  3. Wybierz szablon Plik konfiguracji aplikacji i kliknij przycisk Dodaj.

Definiowanie sekcji konfiguracji niestandardowej

Sprawdź plik app.config. Zawiera co najmniej deklarację XML i element główny.

Aby dodać sekcję konfiguracji niestandardowej do pliku app.config

  1. Elementem głównym pliku app.config powinien być element konfiguracji . Utwórz element configSections w elemenie konfiguracji. configSections powinny być pierwszym elementem w pliku app.config.

  2. W elemenie configSections utwórz element sekcji .

  3. W elemecie sekcji dodaj atrybut o nazwie name i przypisz mu wartość microsoft.visualstudio.testtools. Dodaj inny atrybut o nazwie type i przypisz mu wartość Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.

Element sekcji powinien wyglądać podobnie do następującego:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />

Uwaga

Nazwa zestawu musi być zgodna z używaną wersją.

Definiowanie parametry połączenia

Parametry połączenia definiują informacje specyficzne dla dostawcy na potrzeby uzyskiwania dostępu do źródeł danych. Parametry połączenia zdefiniowane w plikach konfiguracji zapewniają informacje o dostawcy danych wielokrotnego użytku w aplikacji. W tej sekcji utworzysz dwa parametry połączenia, które będą używane przez źródła danych zdefiniowane w sekcji Konfiguracja niestandardowa.

Uwaga

Parametry połączenia może zawierać poufne dane (na przykład hasło). Parametry połączenia jest przechowywany w postaci zwykłego tekstu w kodzie źródłowym i w skompilowanym zestawie. Ogranicz dostęp do kodu źródłowego i zestawu, aby chronić te poufne informacje.

Aby zdefiniować parametry połączenia

  1. Po elemelekcji configSections utwórz element connectionStrings .

  2. W elemecie connectionStrings utwórz dwa elementy dodawania .

  3. W pierwszym elemecie add utwórz następujące atrybuty i wartości dla połączenia z bazą danych programu Microsoft Access:

Atrybut Wartości
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

W drugim elemecie add utwórz następujące atrybuty i wartości dla połączenia z arkuszem kalkulacyjnym programu Microsoft Excel:

Atrybut Wartości
name "MyExcelConn"
connectionString "Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName "System.Data.Odbc"

Element connectionStrings powinien wyglądać podobnie do następującego:

<connectionStrings>
    <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
    <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>

Definiowanie źródeł danych

Sekcja Źródła danych zawiera cztery atrybuty używane przez aparat testowy do pobierania danych ze źródła danych.

  • name definiuje tożsamość używaną przez element DataSourceAttribute , aby określić, które źródło danych ma być używane.

  • connectionStringidentyfikuje parametry połączenia utworzone w poprzedniej sekcji Definiowanie parametrów połączenia.

  • dataTableName definiuje tabelę lub arkusz, który przechowuje dane do użycia w teście.

  • dataAccessMethod definiuje technikę uzyskiwania dostępu do wartości danych w źródle danych.

W tej sekcji zdefiniujesz dwa źródła danych do użycia w teście jednostkowym.

Aby zdefiniować źródła danych

  1. Po elemecie connectionStrings utwórz element microsoft.visualstudio.testtools . Ta sekcja została utworzona w sekcji Definiowanie konfiguracji niestandardowej.

  2. W elemecie microsoft.visualstudio.testtools utwórz element dataSources .

  3. W elemecie dataSources utwórz dwa elementy dodawania .

  4. W pierwszym elemecie add utwórz następujące atrybuty i wartości dla źródła danych programu Microsoft Access:

Atrybut Wartości
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

W drugim elemecie add utwórz następujące atrybuty i wartości dla źródła danych programu Microsoft Excel:

Atrybut Wartości
Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

Element microsoft.visualstudio.testtools powinien wyglądać podobnie do następującego:

<microsoft.visualstudio.testtools>
    <dataSources>
        <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
        <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
    </dataSources>
</microsoft.visualstudio.testtools>

Końcowy plik app.config powinien wyglądać podobnie do następującego:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
    </configSections>
    <connectionStrings>
        <add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
        <add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
    </connectionStrings>
    <microsoft.visualstudio.testtools>
        <dataSources>
            <add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
            <add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
        </dataSources>
    </microsoft.visualstudio.testtools>
</configuration>

Tworzenie testu jednostkowego korzystającego ze źródeł danych zdefiniowanych w pliku app.config

Po zdefiniowaniu pliku app.config utworzysz test jednostkowy, który używa danych znajdujących się w źródłach danych zdefiniowanych w pliku app.config . Ta sekcja obejmuje:

  • Utwórz źródła danych znalezione w pliku app.config .

  • Użyj źródeł danych w dwóch metodach testowych, które porównują wartości w każdym źródle danych.

Aby utworzyć źródło danych programu Microsoft Access

  1. Utwórz bazę danych programu Microsoft Access o nazwie testdatasource.accdb.

  2. Utwórz tabelę i nadaj jej MyDataTable nazwę w pliku testdatasource.accdb.

  3. Utwórz dwa pola w MyDataTable nazwach Arg1 i Arg2 przy użyciu Number typu danych.

  4. Dodaj pięć jednostek do MyDataTable z następującymi wartościami dla Arg1 i Arg2, odpowiednio: (10,50), (3,2), (6,0), (0,8) i (12312,1000).

  5. Zapisz i zamknij bazę danych.

  6. Zmień parametry połączenia, aby wskazywała lokalizację bazy danych. Zmień wartość , Data Source aby odzwierciedlić lokalizację bazy danych.

Aby utworzyć źródło danych programu Microsoft Excel

  1. Utwórz arkusz kalkulacyjny programu Microsoft Excel o nazwie data.xlsx.

  2. Utwórz arkusz o nazwie Sheet1 , jeśli jeszcze nie istnieje w data.xlsx.

  3. Utwórz dwa nagłówki kolumn i nadaj im Val1 nazwę i Val2 w pliku Sheet1.

  4. Dodaj pięć jednostek do Sheet1 z następującymi wartościami dla Val1 i Val2, odpowiednio: (1,1), (2,2), (3,3), (4,4) i (5,0).

  5. Zapisz i zamknij arkusz kalkulacyjny.

  6. Zmień parametry połączenia, aby wskazywała lokalizację arkusza kalkulacyjnego. Zmień wartość , dbq aby odzwierciedlić lokalizację arkusza kalkulacyjnego.

Aby utworzyć test jednostkowy przy użyciu źródeł danych app.config

  1. Dodaj test jednostkowy do projektu testowego.

  2. Zastąp automatycznie wygenerowaną zawartość testu jednostkowego następującym kodem:

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace TestProject1
    {
         [TestClass]
        public class UnitTest1
        {
            private TestContext context;
    
            public TestContext TestContext
            {
                get { return context; }
                set { context = value; }
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\testdatasource.accdb")]
            [DataSource("MyJetDataSource")]
            public void MyTestMethod()
            {
                int a = Int32.Parse(context.DataRow["Arg1"].ToString());
                int b = Int32.Parse(context.DataRow["Arg2"].ToString());
                Assert.AreNotEqual(a, b, "A value was equal.");
            }
    
            [TestMethod()]
            [DeploymentItem("MyTestProject\\data.xlsx")]
            [DataSource("MyExcelDataSource")]
            public void MyTestMethod2()
            {
                Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);
            }
        }
    }
    
  3. Sprawdź atrybuty źródła danych. Zwróć uwagę na nazwy ustawień z pliku app.config .

  4. Skompiluj rozwiązanie i uruchom testy MyTestMethod i MyTestMethod2.

Ważne

Wdróż elementy, takie jak źródła danych, aby były dostępne dla testu w katalogu wdrażania.