<
  • Главная
Статьи

C #. Príklad vytvorenia jednotkového testu v MS Visual Studio

  1. Obsah
  2. poprava
  3. 2. Príprava textu modulu Program.cs
  4. 2.2. Uverejnite triedu programu ako verejnú
  5. 3. Zoznam testovaného programu
  6. 4. Vytvorenie testu
  7. 4.1. Pridanie nového projektu do riešenia
  8. 4.2. Štruktúra riešenia
  9. 4.3. Text súboru "UnitTest1.cs". Atribúty [TestMethod] a [TestClass]
  10. 4.4. Zmeny v texte modulu UnitTest1. Zmena názvu testovacej metódy
  11. 4.5. Pripojenie projektu MinApp k projektu TestMinApp
  12. 4.6. Zmeny v texte modulu UnitTest1.cs
  13. 4.6.2. Text metódy TestMin ()
  14. 4.7. Text modulu UnitTest1.cs
  15. 5. Spustite test a skontrolujte výsledok testu
  16. 6. Výsledok. Interakcia medzi projektmi

Táto téma opisuje postupný proces vytvárania jednoduchého testovania jednotiek v programe Microsoft Visual Studio 2010 (C #) pre aplikáciu, ako napríklad aplikáciu konzoly. Pomocou tohto príkladu sa môžete naučiť, ako vytvoriť vlastné testy jednotiek. Príklad tiež demonštruje použitie triedy Assert na testovanie fungovania funkcií.

Obsah

Stav problému

Pre aplikáciu, ako je aplikácia konzoly, vyvinúť test jednotky, ktorý testuje činnosť funkcie Min (), ktorá určuje maximálny prvok troch čísel.

Pre funkciu Min () nastavte testovaciu metódu na TestMin (). Skontrolujte funkciu.

poprava

1. Vytvorte aplikáciu pomocou šablóny aplikácie Console Applicaiton

Na vykonanie spustite MS Visual Studio 2010. Ak chcete vytvoriť projekt pomocou vzoru aplikácie konzoly, musí sa zavolať nasledujúca postupnosť príkazov:

Súbor -> Nový -> Projekt ...

V dôsledku toho sa otvorí okno Nový projekt. V okne vyberte šablónu aplikácie konzoly podľa obrázka 1. Šablóna sa vyberie na karte Visual C #.

Visual C # -> Konzolová aplikácia

Visual C # -> Konzolová aplikácia

Obr. 1. Okno "Nový projekt". Výber aplikácie typu aplikácie konzoly

2. Príprava textu modulu Program.cs

2.1. Pridajte funkciu Min () do textu modulu

V tele triedy Program pridajte text funkcie Min ().

Funkcia je deklarovaná ako verejná (statická) a verejná. Text funkcie Min ()

public static int Min (int a, int b, int c) {int min = a; ak (min> b) min = b; ak (min> c) min = c; návrat min; }

public static int Min (int a, int b, int c) {int min = a;  ak (min> b) min = b;  ak (min> c) min = c;  návrat min;  }

Obr. 2. Zobrazenie okna MS Visual Studio 2010, modul „Program.cs“

2.2. Uverejnite triedu programu ako verejnú

Ak chcete mať prístup k funkcii Min () programu, musíte túto verejnú triedu sprístupniť. Ak to chcete urobiť, pred deklarovaním triedy musíte definovať kľúčové slovo public.

... namespace MinApp {public class Program {// triedy metódy // ...}} ...

Potom je testovací program pripravený.

3. Zoznam testovaného programu

V súčasnosti je zoznam testovaných programov nasledovný:

pomocou systému; pomocou System.Collections.Generic; pomocou System.Linq; pomocou System.Text; namespace MinApp {public class Program {public static int Min (int a, int b, int c) {int min = a; ak (min> b) min = b; ak (min> c) min = c; návrat min; } static void Main (string [] args) {Console.WriteLine ("Demo na testovanie jednotiek v C #."); }}}

Pretože tento program bude testovaný z iného testovacieho modulu, nie je potrebné zadávať nič iné do funkcie Main (). Vzhľadom k tomu, že v súlade so stavom problému, musíte otestovať fungovanie funkcie Min (). A to sa vykoná z testovacieho modulu. V súčasnosti je náš program pripravený na testovanie.

4. Vytvorenie testu

Test je vytvorený samostatným projektom (Project) v riešení (Solution). Testovaný program o ňom nevie. Program, ktorý bude testovať (testovací program), bude volať funkcie testovaného programu. V našom prípade testovací program zavolá funkciu

int Min (int, int, int);

4.1. Pridanie nového projektu do riešenia

Pre toto riešenie (riešenie) je potrebné pridať nový projekt pomocou príkazu

Súbor-> Pridať-> Nový projekt ...

Okno na vytvorenie nového projektu je znázornené na obr.

Obr. 3. Okno pre vytvorenie projektu typu Test Project

V okne je vybraná skupina Visual C # templates -> Test. Zo zobrazených šablón sa vyberie šablóna projektu „Test Project“. V poli "Názov" je uvedený názov projektu, ktorý bude testovať náš program. Musíte nastaviť napríklad TestMinApp. Projekt sa nachádza v samostatnom priečinku "E: Test MinApp".

Projekt sa nachádza v samostatnom priečinku E: Test MinApp

Obr. 4. Text modulu UnitTest1.cs. Zobrazí sa okno s programom Solution Explorer s projektmi TestMinApp a MinApp

4.2. Štruktúra riešenia

Ako je zrejmé z obrázku 4, nástroj Solution Explorer zobrazí štruktúru Solution Items, ktorá obsahuje dva projekty:

  • projekt MinApp. Toto je projekt vytvorený pomocou šablóny aplikácie konzoly s funkciou Min (), ktorú chcete protestovať;
  • Projekt TestMinApp. Tento projekt je navrhnutý tak, aby otestoval vlastnosti projektu MinApp. Programový kód, ktorý testuje funkciu Min (), sa zapíše do súboru projektu UnitTest1 projektu TestMinApp.

Oba projekty sa môžu realizovať nezávisle od seba.

4.3. Text súboru "UnitTest1.cs". Atribúty [TestMethod] a [TestClass]

V projekte TestMinApp má primárny význam testovací súbor UnitTest1.cs. Tento súbor obsahuje metódy, ktoré otestujú funkcie projektu MinApp. Projekt TestMinApp môže obsahovať ľubovoľný počet súborov, ktoré obsahujú testy (napríklad UnitTest2.cs, UnitTest3.cs, atď.).

Zoznam súboru UnitTest1.cs vygenerovaného MS Visual Studio 2010 je nasledovný:

pomocou systému; pomocou System.Text; pomocou System.Collections.Generic; pomocou System.Linq; pomocou Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Súhrnný popis pre UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {public UnitTest1 () {// // TODO: Pridať logiku konštruktora tu //} private TestContext testContextInstance; /// <summary> /// Dostane alebo nastaví kontext testu. /// </ summary> verejné TestContext TestContext {get {return testContextInstance; } set {testContextInstance = hodnota; }} #region Ďalšie testovacie atribúty // môžete použiť vaše testy // // Use ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Použije ClassCleanup na spustenie kódu po spustení všetkých testov v triede // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Use TestInitialize spustiť kód pred spustením každého testu // [TestInitialize ()] // public void MyTestInitialize () {} // // Použiť testCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: Pridať testovaciu logiku tu //}}}

Ako je zrejmé z vyššie uvedeného kódu, súbor obsahuje triedu s názvom UnitTest1. Trieda má verejnú metódu nazvanú TestMethod1 (). Pred implementáciou metódy TestMethod1 () je umiestnený atribút [TestMethod]. To znamená, že musíte zadať kód, ktorý bude testovať funkcie projektu MinApp v tele metódy.

V triede môžete zadať ľubovoľný počet metód, ktoré budú testovať rôzne funkcie z rôznych modulov. Hlavná vec je, že tieto metódy sú označené atribútom [TestMethod].

4.4. Zmeny v texte modulu UnitTest1. Zmena názvu testovacej metódy

Môžete zmeniť názvy metód a pridať nové metódy, ktoré sú označené atribútom [TestMethod] v module UnitTest1.cs. Vzhľadom na to, v texte modulu UnitTest1.cs, musíte premenovať metódu TestMethod1 () na TestMin ().

Po vykonaní zmien bude skrátený text modulu súboru UnitTest1.cs:

pomocou systému; pomocou System.Text; pomocou System.Collections.Generic; pomocou System.Linq; pomocou Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestMinApp {/// <summary> /// Súhrnný popis pre UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Pridať test logika tu //}}}

4.5. Pripojenie projektu MinApp k projektu TestMinApp

Ak chcete mať prístup k funkcii Min () (projekt MinApp) z projektu TestMinApp, musíte pripojiť priestor názvov, v ktorom sa táto funkcia nachádza.

Na to je potrebné najprv vyvolať kontextové menu projektu TestMinApp. Potom v kontextovom menu musíte zavolať príkaz „Pridať odkaz ...“ (Obrázok 5).

“ (Obrázok 5)

Obr. 5. Tím „Pridať odkaz ...“

Otvorí sa okno Add Reference, v ktorom musíte vybrať projekt MinApp.

Obr. 6. Okno "Pridať odkaz". Pripojenie projektu MinApp

Po dokončení akcií budú funkcie projektu MinApp k dispozícii na použitie v projekte TestMinApp.

Po dokončení akcií budú funkcie projektu MinApp k dispozícii na použitie v projekte TestMinApp

Obr. 7. Karta Odkazy s pripojeným projektom MinApp

4.6. Zmeny v texte modulu UnitTest1.cs
4.6.1. Pridanie menného priestoru MinApp do modulu UnitTest1.cs

V tomto kroku, v module UnitTest1.cs, musíte pridať priestor názvov MinApp pomocou direktívy použitia:

pomocou systému; pomocou System.Text; pomocou System.Collections.Generic; pomocou System.Linq; pomocou Microsoft.VisualStudio.TestTools.UnitTesting; pomocou MinApp; menný priestor TestMinApp {...}

4.6.2. Text metódy TestMin ()

V texte metódy TestMin () zadajte nasledujúci kód:

... [TestMethod] public void TestMin () {// // TODO: Pridať testovaciu logiku tu // int min; min = Program .Min (3, 4, 5); Assre .AreEqual (2, min); } ...

4.7. Text modulu UnitTest1.cs

Text celého modulu UnitTest1.cs je nasledovný:

pomocou systému; pomocou System.Text; pomocou System.Collections.Generic; pomocou System.Linq; pomocou Microsoft.VisualStudio.TestTools.UnitTesting; pomocou MinApp; namespace TestMinApp {/// <summary> /// Súhrnný popis pre UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {public UnitTest1 () {// // TODO: Pridať logiku konštruktora tu //} private TestContext testContextInstance; /// <summary> /// Dostane alebo nastaví kontext testu. /// </ summary> verejné TestContext TestContext {get {return testContextInstance; } set {testContextInstance = hodnota; }} #region Ďalšie testovacie atribúty // môžete použiť vaše testy // // Use ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Použije ClassCleanup na spustenie kódu po spustení všetkých testov v triede // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Use TestInitialize spustiť kód pred spustením každého testu // [TestInitialize ()] // public void MyTestInitialize () {} // // Použite TestCleanup na spustenie kódu po každom teste spustenom // [TestCleanup ()] // public void MyTestCleanup ( ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Pridať testovaciu logiku tu // int min; min = Program .Min (3, 4, 5); Assre .AreEqual (2, min); }}}

5. Spustite test a skontrolujte výsledok testu

V programe Microsoft Visual Studio 2010 je pre prácu s testami jednotiek implementovaná špeciálna ponuka príkazov s názvom Test.

Ak chcete spustiť test vykonania, vyberte jeden z príkazov.

Test -> Run -> Tests in Current Context

alebo

Test -> Run -> All Tests in Solution

ako je znázornené na obr.

Obr. 8. Zavolajte príkaz Start test a zobrazte výsledok.

Po spustení testu je možné výsledok zobraziť v dolnej časti okna Výsledky testov. Ako je možné vidieť na obrázku, test sa nevyhovie. Je to logické, pretože vo funkcii Assert.AreEqual () porovnávame čísla 2 a 3, ktoré sú odlišné. Tu je číslo 2 špeciálne zavedené namiesto 3.

Ak namiesto čísla 2 zadáte správnu odpoveď - číslo 3 (minimálne medzi 3, 4, 5), potom test prebehne (obrázok 9). V tomto prípade bude text metódy TestMin () nasledovný:

... [TestMethod] public void TestMin () {// // TODO: Pridať testovaciu logiku tu // int min; min = Program .Min (3, 4, 5); Assre .AreEqual (3, min); } ...

Okno s výsledkami je znázornené na obrázku 9.

Obr. 9. Výsledok testu pre prípad, ak zadáte správnu odpoveď

Teraz môžeme konštatovať, že funkcia Min () pre tento prípad funguje správne.

6. Výsledok. Interakcia medzi projektmi

V tomto príspevku sú v riešení vytvorené dva projekty. Jeden projekt MinApp obsahuje funkciu Min (), ktorú chcete otestovať. Druhý projekt TestMinApp obsahuje testovacie metódy.

V programe Microsoft Visual Studio 2010 sa každý projekt spúšťa pomocou rôznych príkazov ponuky. Projekt MinApp sa teda spúšťa štandardným spôsobom z ponuky Spustiť. Projekt TestMinApp sa spustí zo špeciálneho menu Test.

Súvisiace témy



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью