toto téma popisuje postupný proces vytváření nejjednoduššího testu jednotek v aplikaci Microsoft Visual Studio 2010 (C#) pro konzolovou aplikaci. Pomocí tohoto příkladu se můžete naučit, jak vytvořit vlastní testy jednotek. Příklad také ukazuje, jak používat třídu Assert pro testování.

Obsah

  • Úkol
  • Instrukce
    • 1. Vytvořte aplikaci pomocí šablony aplikace konzoly
    • 2. Příprava textu programu.cs modul
      • 2.1. Přidání funkce Min ()
      • 2.2. Zveřejněte programovou třídu
    • 3. Seznam testovaného programu
    • 4. Vytvoření testu
      • 4.1. Přidání nového projektu do řešení
      • 4.2. Struktura roztoku
      • 4.3. Programový kód “ UnitTest1.CS “ soubor. Atributy a
      • 4.4. Provádění změn v textu UnitTest1.cs modul. Změna názvu zkušební metody
      • 4.5. Připojení projektu MinApp k projektu TestMinApp
      • 4.6. Modifikace UnitTest1.text modulu cs
        • 4.6.1. Přidání jmenného prostoru MinApp do UnitTest1.cs
        • 4.6.2. Text metody TestMin ()
      • 4.7. Text UnitTest1.cs modul
    • 5. Spusťte test a zkontrolujte výsledek testování
    • 6. Výsledek. Interakce mezi projekty
  • Související témata

hledat jiné webové stránky:

úkol

pro aplikaci typu konzoly vytvořte test jednotky, který testuje funkci Min (). Pro funkci Min() nastavte zkušební metodu TestMin (). Otestujte výsledek funkce.

instrukce

1. Vytvořte aplikaci pomocí šablony aplikace konzoly

spusťte MS Visual Studio 2010. Chcete-li vytvořit projekt pomocí šablony aplikace konzoly, musíte zavolat následující příkazovou sekvenci:

File -> New -> Project...

v důsledku toho se otevře nové okno projektu. V okně vyberte šablonu „aplikace konzoly“, jak je znázorněno na obrázku 1. Šablona je vybrána na kartě Visual C#.

 C#. Formuláře Systému Windows. Okno "Nový projekt". Výběr "aplikace konzoly"

Obrázek 1. Okno „Nový projekt“. Výběr „aplikace konzoly“

2. Příprava textu programu.cs modul

2.1. Přidáním funkce Min ()

do těla třídy programu je třeba přidat text funkce Min (). Funkce je deklarována jako veřejná a statická. Text funkce Min ()

C#. Okno MS Visual Studio, modul " Program.ČS"

Obrázek 2. Okno MS Visual Studio, modul “ Program.ČS“

2.2. Zveřejněte třídu programu

Chcete-li získat přístup k funkci Min() třídy programu, musíte tuto třídu zveřejnit. Chcete-li to provést, musíte před deklarací třídy nastavit veřejné Klíčové slovo.

...namespace MinApp{ public class Program { // методы класса // ... }}...

poté je testovaný program připraven.

3. Seznam testovaného programu

v současné době je programový kód testovaného programu následující:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MinApp{ public class Program { public static int Min(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } static void Main(string args) { Console.WriteLine("Demo of Unit-testing in C#."); } }}

protože tento program bude testován z jiného testovacího modulu, pak v hlavní funkci() nemusíte psát nic jiného. Vzhledem k tomu, že v souladu s podmínkou úkolu musíte otestovat funkci Funkce Min (). A to již bude provedeno z testovacího modulu. V současné době je náš program připraven k testování.

4. Vytvoření testu

test je vytvořen samostatným projektem v řešení. Program, který testujete, o tom neví. Testovací program, který bude testovat volá funkce programu, který je testován. V našem případě testovací program zavolá funkci

int Min(int, int, int);

4.1. Přidání nového projektu do řešení

pro toto řešení je přidán nový projekt pomocí příkazu

File->Add->New Project...

okno pro vytvoření nového projektu je znázorněno na obrázku 3.

 C#. Aplikace Windows Forms. Okno pro vytvoření projektu typu Test Project

obrázek 3. Okno pro vytvoření projektu typu testovací projekt

v okně je třeba vybrat skupinu šablon

Visual C# -> Test

ze zobrazených šablon je vybrána šablona projektu „testovací projekt“. Pole „název“ označuje název projektu, který otestuje náš program. Musíte nastavit například TestMinApp. Projekt je umístěn v samostatné složce „E:\Test\MinApp“.

 C#. "UnitTest1.CS " soubor. Okno Průzkumníka řešení s projekty TestMinApp a MinApp zobrazeno

obrázek 4. „UnitTest1.CS “ soubor. Zobrazí se okno Průzkumníka řešení s projekty TestMinApp a MinApp

4.2. Struktura řešení

jak vidíte na obrázku 4, průzkumník řešení zobrazuje strukturu položek řešení, která obsahuje dva projekty:

  • projekt MinApp. Jedná se o projekt vytvořený pomocí šablony „Console Application“ s testovanou funkcí Min ();
  • Projekt TestMinApp. Tento projekt je určen k testování funkcí projektu MinApp. Programový kód, který testuje funkci Min (), bude přidán do souboru projektu UnitTest1 projektu TestMinApp.

oba projekty mohou být provedeny nezávisle na sobě.

4.3. Programový kód “ UnitTest1.CS “ soubor. Atributy a

v projektu TestMinApp, UnitTest1.cs testovací soubor je primárním zájmem. Tento soubor obsahuje metody, které otestují funkce projektu MinApp. Projekt TestMinApp může obsahovat libovolný počet souborů, které obsahují testy (například UnitTest2.ČS, UnitTest3.cs, atd.).

programový kód “ UnitTest1.cs “ soubor, generovaný MS Visual Studio 2010, je následující:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMethod1() { // // TODO: Add test logic here // } }}

jak můžete vidět z výše uvedeného kódu, soubor obsahuje třídu s názvem UnitTest1. Třída zahrnuje veřejnou metodu s názvem TestMethod1 ().Před implementací metody TestMethod1() je atribut umístěn. To znamená, že v těle metody je třeba napsat kód, který bude testovat funkce projektu MinApp.

ve třídě můžete zadat libovolný počet metod, které budou testovat různé funkce z různých modulů. Hlavní věc je, že tyto metody, kde si všiml atribut .

4.4. Provádění změn v textu UnitTest1.cs modul. Změna názvu testovací metody

můžete změnit názvy metod a přidat nové metody, které jsou označeny atributem v UnitTest1.cs modul. S ohledem na to, v UnitTest1.cs, metoda TestMethod1() by měla být přejmenována na TestMin().

po provedení změn je zkrácený text UnitTest1.cs soubor modul bude vypadat:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { ... public void TestMin() { // // TODO: Add test logic here // } }}

4.5. Připojení projektu MinApp k projektu TestMinApp

Chcete-li získat přístup k funkci Min () (projekt MinApp) z projektu TestMinApp, musíte připojit jmenný prostor, ve kterém je tato funkce deklarována.

Chcete-li to provést, musíte nejprve vyvolat kontextové menu projektu TestMinApp. Poté v kontextové nabídce musíte zavolat příkaz „Přidat odkaz …“ (obrázek 5).

 C#. Vytvoření jednotkového testu. "Přidat Odkaz..."příkaz

obrázek 5. Příkaz „Přidat Referencse …“

v důsledku toho se otevře okno „Přidat odkaz“, ve kterém vyberete projekt MinApp.

 C#. Unit-test vytvoření okna" Přidat odkaz". Připojení projektu MinApp

obrázek 6. Okno „Přidat odkaz“. Připojení projektu MinApp

po provedených akcích budou funkce projektu MinApp k dispozici pro použití v projektu TestMinApp.

 C#. Aplikace Windows Forms. Karta "reference" s připojeným projektem MinApp

Obrázek 7. Karta „reference“ s připojeným projektem MinApp

4.6. Modifikace UnitTest1.text modulu cs
4.6.1. Přidání jmenného prostoru MinApp do UnitTest1.cs

v tomto kroku je třeba přidat jmenný prostor MinApp do UnitTest1.cs pomocí směrnice „using“:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ ...}

4.6.2. Text metody TestMin ()

v textu Metody TestMin () musíte zadat následující kód:

...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min);}...

4.7. Text UnitTest1.cs modul

text všech UnitTest1.modul cs je následující:

using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using MinApp;namespace TestMinApp{ /// <summary> /// Summary description for UnitTest1 /// </summary> public class UnitTest1 { public UnitTest1() { // // TODO: Add constructor logic here // } private TestContext testContextInstance; /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region Additional test attributes // // You can use the following additional attributes as you write your tests: // // Use ClassInitialize to run code before running the first test in the class // // public static void MyClassInitialize(TestContext testContext) { } // // Use ClassCleanup to run code after all tests in a class have run // // public static void MyClassCleanup() { } // // Use TestInitialize to run code before running each test // // public void MyTestInitialize() { } // // Use TestCleanup to run code after each test has run // // public void MyTestCleanup() { } // #endregion public void TestMin() { // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(2, min); } }}

5. Spusťte test a kontrolu výsledku testování

v aplikaci Microsoft Visual Studio 2010 pro jednotkové testy je implementováno speciální menu „Test“.

Chcete-li spustit test, musíte vybrat jeden z příkazů

Test -> Run -> Tests in Current Context

nebo

Test -> Run -> All Tests in Solution

, jak je znázorněno na obrázku 8.

 C#. Vytvoření jednotkového testu. Volání testovacího příkazu a zobrazení výsledku

Obrázek 8. Volání testovacího příkazu a zobrazení výsledku

po spuštění testu lze výsledek Zobrazit vlevo v okně Průzkumníka testu. Jak je patrné z obrázku 8, test neprošel. To je logické, protože ve funkci Assert.AreEqual () porovnáváme čísla 2 a 3, která se liší. Zde je číslo 2 speciálně zadáno místo čísla 3.

pokud místo čísla 2 zadáte správnou odpověď – číslo 3 (minimálně mezi 3, 4, 5), bude test předložen (obrázek 9). V tomto případě bude text metody TestMin () následující:

...public void TestMin(){ // // TODO: Add test logic here // int min; min = Program.Min(3, 4, 5); Assert.AreEqual(3, min);}...

výsledné okno je znázorněno na obrázku 9.

 C#. Vytvoření jednotkového testu. Výsledek testu pro případ, kdy zadáte správnou odpověď

obrázek 9. Výsledek testu pro případ, kdy zadáte správnou odpověď

Nyní můžeme konstatovat, že funkce Min() funguje v tomto případě správně.

6. Výsledek. Interakce mezi projekty

v tomto úkolu řešení zahrnuje dva projekty. Jeden projekt MinApp obsahuje funkci Min (), která má být testována. Druhý projekt TestMinApp obsahuje testovací metody. V aplikaci Microsoft Visual Studio 2010 se každý z projektů spouští pomocí různých příkazů nabídky. Projekt MinApp je tedy spuštěn standardním způsobem z nabídky Spustit. A projekt TestMinApp je spuštěn ze speciální nabídky „Test“.

Leave a comment

Vaše e-mailová adresa nebude zveřejněna.