Sdílet prostřednictvím


Návod: Definování zdroje dat pomocí konfiguračního souboru

Tento návod ukazuje, jak použít zdroj dat definovaný v souboru app.config pro testování jednotek. Dozvíte se, jak vytvořit app.config soubor, který definuje zdroj dat, který může DataSourceAttribute třída používat. Mezi úlohy uvedené v tomto názorném postupu patří:

  • Vytvoření souboru app.config

  • Definování vlastní konfigurační sekce

  • Definování připojovacích řetězců

  • Definování zdrojů dat

  • Přístup ke zdrojům dat pomocí třídy DataSourceAttribute

Poznámka

DataSourceAttribute se v současné době podporuje pouze v rozhraní .NET Framework.

Požadavky

K dokončení tohoto návodu 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

  1. Pokud váš testovací projekt již obsahuje soubor app.config, přejděte na Definovat vlastní konfigurační oddíl.

  2. V Průzkumník řešení klikněte na testovací projekt pravým tlačítkem myši a poté vyberte Přidat>Nová položka.

    Otevře se okno Přidat novou položku. Pokud nevidíte všechny šablony položek, zvolte Zobrazit všechny šablonya pak zvolte šablonu položky.

  3. Vyberte šablonu Konfigurační soubor aplikace a klikněte na Přidat.

Definovat vlastní oddíl konfigurace

Prozkoumejte soubor app.config. Obsahuje alespoň deklaraci XML a kořenový prvek.

Přidejte vlastní konfigurační oddíl do souboru app.config

  1. Kořenovým prvkem app.config by měl být element konfigurace . Vytvořte element configSections v elementu configuration. configSections by měl být prvním prvkem v souboru app.config.

  2. V elementu configSections vytvořte element oddílu.

  3. V oddílu element přidejte atribut s názvem name a přiřaďte mu hodnotu microsoft.visualstudio.testtools. Přidejte další atribut s názvem type a přiřaďte mu hodnotu Microsoft.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ích řetězců

Připojovací řetězce 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 dva připojovací řetězce, které budou používány zdroji dat definovanými v oddílu Vlastní konfigurace.

Opatrnost

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ích řetězců

  1. Za element configSections vytvořte element connectionStrings.

  2. V elementu connectionStrings vytvořte dva elementy add.

  3. V prvním elementu přidejte element a vytvořte následující atributy a hodnoty pro připojení k databázi Microsoft Access:

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 prvku přidejte prvek a vytvořte následující atributy a hodnoty pro připojení k tabulce 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 k použití v jednotkovém testu.

Definování zdrojů dat

  1. Po elementu connectionStrings vytvořte element microsoft.visualstudio.testtools. Tento oddíl byl vytvořen v části Definovat vlastní konfiguraci.

  2. V elementu microsoft.visualstudio.testtools vytvořte prvek dataSources.

  3. V elementu dataSources vytvořte dva add elementy.

  4. Ve prvním prvku přidejte prvek a vytvořte následující atributy a hodnoty pro zdroj dat Microsoft Access:

Atribut Hodnoty
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

Ve druhém prvku přidejte prvek a vytvořte následující atributy a hodnoty pro zdroj dat 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řte jednotkový test, který používá zdroje dat definované v app.config.

Teď, když je definovaný soubor app.config, 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

  1. Vytvořte databázi Aplikace Microsoft Access s názvem testdatasource.accdb.

  2. Vytvořte tabulku a pojmenujte ji MyDataTable v testdatasource.accdb.

  3. Vytvořte dvě pole v MyDataTable pojmenovaných Arg1 a Arg2 pomocí datového typu Number.

  4. Přidejte do MyDataTable pět entit s následujícími hodnotami pro Arg1 a Arg2: (10 50), (3,2), (6,0), (0,8) a (12312 1000).

  5. Uložte a zavřete databázi.

  6. Změňte připojovací řetězec tak, aby směřoval 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

  1. Vytvořte tabulku aplikace Microsoft Excel s názvem data.xlsx.

  2. Vytvořte list s názvem Sheet1, pokud ještě neexistuje v data.xlsx.

  3. Vytvořte dvě záhlaví sloupců a pojmenujte je Val1 a Val2 v Sheet1.

  4. Přidejte do Sheet1 pět entit s následujícími hodnotami pro Val1 a Val2: (1,1), (2,2), (3,3), (4,4) a (5,0).

  5. Uložte a zavřete tabulku.

  6. Změňte připojovací řetězec tak, aby ukazoval na umístění tabulky. Změňte hodnotu dbq tak, aby odrážela umístění tabulky.

K vytvoření jednotkového testu s použitím zdrojů dat app.config

  1. Přidejte do testovacího projektu jednotkový test.

  2. Nahraďte obsah automaticky vygenerovaného jednotkového testu 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"]);
            }
        }
    }
    
  3. Prozkoumejte atributy DataSource. Všimněte si názvů nastavení ze souboru app.config.

  4. 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í.