Návod: Definování zdroje dat pomocí konfiguračního souboru
Tento názorný postup ukazuje, jak použít zdroj dat definovaný v souboru app.config pro testování jednotek. Dozvíte se, jak vytvořit soubor app.config , který definuje zdroj dat, který může třída používat DataSourceAttribute . Mezi úlohy uvedené v tomto názorném postupu patří:
Vytvoření souboru app.config
Definování vlastního oddílu konfigurace
Definování připojovací řetězec
Definování zdrojů dat
Přístup ke zdrojům dat pomocí DataSourceAttribute třídy
Poznámka:
DataSourceAttribute se v současné době podporuje pouze v rozhraní .NET Framework.
Požadavky
K dokončení tohoto názorného postupu potřebujete:
Visual Studio Enterprise
Microsoft Access nebo Microsoft Excel k poskytování dat alespoň jedné z testovacích metod.
Řešení sady Visual Studio, které obsahuje testovací projekt.
Přidání souboru app.config do projektu
Pokud už testovací projekt obsahuje soubor app.config , přejděte do části Definovat vlastní konfiguraci.
Klikněte pravým tlačítkem myši na testovací projekt v Průzkumník řešení a pak vyberte Přidat>novou položku.
Otevře se okno Přidat novou položku . Pokud nevidíte všechny šablony položek, zvolte Zobrazit všechny šablony a pak zvolte šablonu položky.
Vyberte šablonu konfiguračního souboru aplikace a klikněte na Přidat.
Definování vlastního oddílu konfigurace
Prozkoumejte soubor app.config. Obsahuje alespoň deklaraci XML a kořenový prvek.
Přidání vlastního konfiguračního oddílu do souboru app.config
Kořenovým prvkem app.config by měl být element konfigurace. Vytvořte element configSections v rámci elementu konfigurace . ConfigSections by měl být prvním prvkem v souboru app.config.
V elementu configSections vytvořte element oddílu.
V elementu oddílu přidejte atribut volaný
name
a přiřaďte mu hodnotumicrosoft.visualstudio.testtools
. Přidejte další volanýtype
atribut a přiřaďte mu hodnotuMicrosoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions
.
Prvek oddílu by měl vypadat nějak takto:
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
Poznámka:
Název sestavení musí odpovídat verzi, kterou používáte.
Definování připojovací řetězec
Připojovací řetězec definují informace specifické pro zprostředkovatele pro přístup ke zdrojům dat. Připojovací řetězce definované v konfiguračních souborech poskytují opakovaně použitelné informace o poskytovateli dat v rámci aplikace. V této části vytvoříte dvě připojovací řetězec, které budou používány zdroji dat definovanými v oddílu Vlastní konfigurace.
Upozornění
Připojovací řetězec může obsahovat citlivá data (například heslo). Připojovací řetězec je uložen v prostém textu ve zdrojovém kódu a v kompilovaném sestavení. Omezte přístup ke zdrojovému kódu a sestavení, abyste ochránili tyto citlivé informace.
Definování připojovací řetězec
Za configSections element, vytvořte connectionStrings element.
V elementu connectionStrings vytvořte dva přidat elementy.
V prvním přidání elementu vytvořte následující atributy a hodnoty pro připojení k databázi Microsoft Accessu:
Atribut | Hodnoty |
---|---|
name |
"MyJetConn" |
connectionString |
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" |
providerName |
"System.Data.OleDb" |
Ve druhém doplňku vytvořte následující atributy a hodnoty pro připojení k tabulce Aplikace Microsoft Excel:
Atribut | Hodnoty |
---|---|
name |
"MyExcelConn" |
connectionString |
"Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" |
providerName |
"System.Data.Odbc" |
Element connectionStrings by měl vypadat nějak takto:
<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>
Definování zdrojů dat
Část zdroje dat obsahuje čtyři atributy, které testovací modul používá k načtení dat ze zdroje dat.
name
definuje identitu používanou DataSourceAttribute k určení, který zdroj dat se má použít.connectionString
identifikuje připojovací řetězec vytvořené v předchozí části Definovat připojovací řetězce.dataTableName
definuje tabulku nebo list obsahující data, která se mají použít v testu.dataAccessMethod
definuje techniku přístupu k hodnotám dat ve zdroji dat.
V této části definujete dva zdroje dat, které se mají použít v testu jednotek.
Definování zdrojů dat
Za connectionStrings element, vytvořte microsoft.visualstudio.testtools element. Tento oddíl byl vytvořen v části Definovat vlastní konfiguraci.
V elementu microsoft.visualstudio.testtools vytvořte element dataSources .
V elementu dataSources vytvořte dva prvky přidání .
V prvním prvku add vytvořte následující atributy a hodnoty pro zdroj dat Aplikace Microsoft Access:
Atribut | Hodnoty |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
Ve druhém doplňku vytvořte následující atributy a hodnoty pro zdroj dat Aplikace Microsoft Excel:
Atribut | Hodnoty |
---|---|
Name |
"MyExcelDataSource" |
connectionString |
"MyExcelConn" |
dataTableName |
"Sheet1$" |
dataAccessMethod |
"Sequential" |
Element microsoft.visualstudio.testtools by měl vypadat nějak takto:
<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>
Konečný soubor app.config by měl vypadat nějak takto:
<?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>
Vytvoření testu jednotek, který používá zdroje dat definované v app.config
Teď, když je soubor app.config definovaný, vytvoříte test jednotek, který používá data umístěná ve zdrojích dat definovaných v souboru app.config . V této části:
Vytvořte zdroje dat nalezené v souboru app.config .
Zdroje dat použijte ve dvou testovacích metodách, které porovnávají hodnoty v každém zdroji dat.
Vytvoření zdroje dat Microsoft Accessu
Vytvořte databázi Microsoft Accessu s názvem testdatasource.accdb.
Vytvořte tabulku a pojmenujte ji
MyDataTable
v souboru testdatasource.accdb.Vytvořte dvě pole s
MyDataTable
názvemArg1
aArg2
pomocí datovéhoNumber
typu.Přidejte pět
MyDataTable
entit s následujícími hodnotami proArg1
aArg2
v uvedeném pořadí: (10 50), (3,2), (6,0), (0,8) a (12312 1000).Uložte a zavřete databázi.
Změňte připojovací řetězec tak, aby odkazovat na umístění databáze. Změňte hodnotu
Data Source
tak, aby odrážela umístění databáze.
Vytvoření zdroje dat Aplikace Microsoft Excel
Vytvořte tabulku Aplikace Microsoft Excel s názvem data.xlsx.
Vytvořte list s názvem
Sheet1
, pokud ještě v data.xlsx neexistuje.Vytvořte dvě záhlaví sloupců a pojmenujte je
Val1
aVal2
vSheet1
souboru .Přidejte pět
Sheet1
entit s následujícími hodnotami proVal1
aVal2
v uvedeném pořadí: (1,1), (2,2), (3,3), (4,4) a (5,0).Uložte a zavřete tabulku.
Změňte připojovací řetězec tak, aby odkazovat na umístění tabulky. Změňte hodnotu
dbq
tak, aby odrážela umístění tabulky.
Vytvoření testu jednotek pomocí zdrojů dat app.config
Přidejte do testovacího projektu test jednotek.
Nahraďte automaticky vygenerovaný obsah testu jednotek následujícím kódem:
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"]); } } }
Prozkoumejte atributy DataSource. Všimněte si názvů nastavení ze souboru app.config .
Sestavte řešení a spusťte testy MyTestMethod a MyTestMethod2.
Důležité
Nasaďte položky, jako jsou zdroje dat, aby byly přístupné pro test v adresáři nasazení.