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
Jeśli projekt testowy ma już plik app.config , przejdź do sekcji Definiowanie konfiguracji niestandardowej.
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.
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
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.
W elemenie configSections utwórz element sekcji .
W elemecie sekcji dodaj atrybut o nazwie
name
i przypisz mu wartośćmicrosoft.visualstudio.testtools
. Dodaj inny atrybut o nazwietype
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
Po elemelekcji configSections utwórz element connectionStrings .
W elemecie connectionStrings utwórz dwa elementy dodawania .
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.connectionString
identyfikuje 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
Po elemecie connectionStrings utwórz element microsoft.visualstudio.testtools . Ta sekcja została utworzona w sekcji Definiowanie konfiguracji niestandardowej.
W elemecie microsoft.visualstudio.testtools utwórz element dataSources .
W elemecie dataSources utwórz dwa elementy dodawania .
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
Utwórz bazę danych programu Microsoft Access o nazwie testdatasource.accdb.
Utwórz tabelę i nadaj jej
MyDataTable
nazwę w pliku testdatasource.accdb.Utwórz dwa pola w
MyDataTable
nazwachArg1
iArg2
przy użyciuNumber
typu danych.Dodaj pięć jednostek do
MyDataTable
z następującymi wartościami dlaArg1
iArg2
, odpowiednio: (10,50), (3,2), (6,0), (0,8) i (12312,1000).Zapisz i zamknij bazę danych.
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
Utwórz arkusz kalkulacyjny programu Microsoft Excel o nazwie data.xlsx.
Utwórz arkusz o nazwie
Sheet1
, jeśli jeszcze nie istnieje w data.xlsx.Utwórz dwa nagłówki kolumn i nadaj im
Val1
nazwę iVal2
w plikuSheet1
.Dodaj pięć jednostek do
Sheet1
z następującymi wartościami dlaVal1
iVal2
, odpowiednio: (1,1), (2,2), (3,3), (4,4) i (5,0).Zapisz i zamknij arkusz kalkulacyjny.
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
Dodaj test jednostkowy do projektu testowego.
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"]); } } }
Sprawdź atrybuty źródła danych. Zwróć uwagę na nazwy ustawień z pliku app.config .
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.