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 definiujący ź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 parametrów połączenia.
Definiowanie źródeł danych.
Uzyskiwanie dostępu do źródeł danych przy użyciu klasy DataSourceAttribute.
Notatka
DataSourceAttribute jest obecnie obsługiwany tylko w programie .NET Framework.
Warunki wstępne
Aby ukończyć ten przewodnik, potrzebne są następujące elementy:
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 Definiuj niestandardową konfigurację.
Kliknij prawym przyciskiem myszy projekt testowy w eksploratorze rozwiązań , a następnie wybierz pozycję Dodaj nowy element>.
Okno Dodawanie nowego elementu zostanie otwarte. Jeśli nie widzisz wszystkich szablonów elementów, wybierz pozycję Pokaż wszystkie szablony, a następnie wybierz szablon elementu.
Wybierz szablon pliku 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 app.config powinien być element konfiguracji. Utwórz element configSections w elemecie configuration. configSections powinien być pierwszym elementem w pliku app.config.
W elemencie configSections utwórz element sekcji .
W sekcji element 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
.
Sekcja , element powinien wyglądać podobnie do tego:
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
Notatka
Nazwa zestawu musi być zgodna z używaną wersją.
Definiowanie parametrów 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.
Ostrożność
Parametry połączenia mogą zawierać poufne dane (na przykład hasło). Parametry połączenia są przechowywane 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 elemenie configSections utwórz element connectionStrings.
W elemencie connectionStrings utwórz dwa elementy add.
W pierwszym dodaj element, 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 dodaj element, 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 DataSourceAttribute w celu określenia źródła danych do użycia.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 elemencie connectionStrings utwórz element microsoft.visualstudio.testtools. Ta sekcja została utworzona w sekcji Definiowanie konfiguracji niestandardowej.
W elemencie microsoft.visualstudio.testtools utwórz element dataSources.
W elemencie dataSources utwórz dwa elementy 'add'.
W pierwszym dodaj element, 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 dodaj element, 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 jak ten:
<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 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. W tej sekcji będziemy:
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 nazwę
MyDataTable
w testdatasource.accdb.Utwórz dwa pola w
MyDataTable
o nazwieArg1
iArg2
przy użyciu typu danychNumber
.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ły 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 nazwę
Val1
iVal2
wSheet1
.Dodaj pięć jednostek do
Sheet1
z następującymi wartościami odpowiednio dlaVal1
iVal2
: (1,1), (2,2), (3,3), (4,4) i (5,0).Zapisz i zamknij arkusz kalkulacyjny.
Zmień parametry połączenia, aby wskazywały lokalizację arkusza kalkulacyjnego. Zmień wartość
dbq
, aby odzwierciedlić lokalizację arkusza kalkulacyjnego.
Aby utworzyć test jednostkowy przy użyciu app.config źródeł danych
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żny
Wdróż elementy, takie jak źródła danych, aby były dostępne dla testu w katalogu wdrożeniowym.