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

C #. Przykład tworzenia testu jednostkowego w MS Visual Studio

  1. Treść
  2. Wykonanie
  3. 2. Przygotowanie tekstu modułu Program.cs
  4. 2.2. Upublicznij klasę programu
  5. 3. Lista testowanego programu
  6. 4. Tworzenie testu
  7. 4.1. Dodanie nowego projektu do rozwiązania
  8. 4.2. Struktura rozwiązania
  9. 4.3. Tekst pliku „UnitTest1.cs”. Atrybuty [TestMethod] i [TestClass]
  10. 4.4. Wprowadzanie zmian w tekście modułu UnitTest1. Zmiana nazwy metody testowania
  11. 4.5. Podłączanie projektu MinApp do projektu TestMinApp
  12. 4.6. Wprowadzanie zmian w tekście modułu UnitTest1.cs
  13. 4.6.2. Tekst metody TestMin ()
  14. 4.7. Tekst modułu UnitTest1.cs
  15. 5. Uruchom test i sprawdź wynik testu
  16. 6. Wynik. Interakcja między projektami

W tym temacie opisano krok po kroku proces tworzenia prostego testu jednostkowego w Microsoft Visual Studio 2010 (C #) dla aplikacji takiej jak Aplikacja konsoli. Korzystając z tego przykładu, możesz dowiedzieć się, jak tworzyć własne testy jednostkowe. Przykład demonstruje również użycie klasy Assert do testowania działania funkcji.

Treść

Stan problemu

Dla aplikacji takiej jak Konsola, opracuj test Jednostki, który testuje działanie funkcji Min (), która określa maksymalny element trzech liczb.

Dla funkcji Min () ustaw metodę testowania na TestMin (). Sprawdź funkcję.

Wykonanie

1. Utwórz aplikację za pomocą szablonu Console Applicaiton

Uruchom program MS Visual Studio 2010. Aby utworzyć projekt przy użyciu wzorca aplikacji konsoli, należy wywołać następującą sekwencję poleceń:

Plik -> Nowy -> Projekt ...

W rezultacie otworzy się okno Nowy projekt. W oknie wybierz szablon aplikacji konsoli, jak pokazano na rysunku 1. Szablon jest zaznaczony w zakładce Visual C #.

Visual C # -> Aplikacja konsoli

Visual C # -> Aplikacja konsoli

Rys. 1. Okno „Nowy projekt”. Wybór aplikacji typu aplikacji konsoli

2. Przygotowanie tekstu modułu Program.cs

2.1. Dodaj funkcję Min () do tekstu modułu

W treści klasy Program dodaj tekst funkcji Min ().

Funkcja jest zadeklarowana jako publiczna (statyczna) i publiczna. Tekst funkcji min ()

public static int Min (int a, int b, int c) {int min = a; jeśli (min> b) min = b; jeśli (min> c) min = c; zwrot min; }

public static int Min (int a, int b, int c) {int min = a;  jeśli (min> b) min = b;  jeśli (min> c) min = c;  zwrot min;  }

Rys. 2. Widok okna MS Visual Studio 2010, moduł „Program.cs”

2.2. Upublicznij klasę programu

Aby mieć dostęp do funkcji Min () klasy Program, musisz udostępnić tę klasę publicznie. Aby to zrobić, przed zadeklarowaniem klasy należy zdefiniować słowo kluczowe public.

... przestrzeń nazw MinApp {public class Program {// metody klasy // ...}} ...

Następnie program testowy jest gotowy.

3. Lista testowanego programu

W tej chwili lista testowanego programu jest następująca:

korzystanie z systemu; przy użyciu System.Collections.Generic; przy użyciu System.Linq; przy użyciu System.Text; przestrzeń nazw MinApp {public class Program {public static int Min (int a, int b, int c) {int min = a; jeśli (min> b) min = b; jeśli (min> c) min = c; zwrot min; } static void Main (string [] args) {Console.WriteLine ("Demo testów jednostkowych w C #."); }}}

Ponieważ ten program będzie testowany z innego modułu testującego, nie ma potrzeby wprowadzania niczego innego w funkcji Main (). Ponieważ zgodnie ze stanem problemu należy przetestować działanie funkcji Min (). I to zostanie zrobione z modułu testowego. W tej chwili nasz program jest gotowy do testów.

4. Tworzenie testu

Test jest tworzony przez oddzielny projekt (Projekt) w rozwiązaniu (Rozwiązanie). Testowany program nie wie o tym. Program, który przetestuje (program testujący), wywoła funkcje testowanego programu. W naszym przypadku program testowy wywoła funkcję

int Min (int, int, int);

4.1. Dodanie nowego projektu do rozwiązania

W przypadku tego rozwiązania (Rozwiązanie) należy dodać nowy projekt za pomocą polecenia

Plik-> Dodaj-> Nowy projekt ...

Okno tworzenia nowego projektu pokazano na rysunku 3.

Rys. 3. Okno do tworzenia projektu typu Test Project

Grupa szablonów Visual C # -> Test jest zaznaczona w oknie. Z wyświetlonych szablonów wybierany jest szablon projektu „Test Project”. W polu „Nazwa” wskazywana jest nazwa projektu, który będzie testował nasz program. Musisz ustawić, na przykład, TestMinApp. Projekt znajduje się w osobnym folderze „E: TestApp”.

Projekt znajduje się w osobnym folderze „E: TestApp”

Rys. 4. Tekst modułu UnitTest1.cs. Okno narzędzia Solution Explorer z wyświetlonymi projektami TestMinApp i MinApp

4.2. Struktura rozwiązania

Jak widać na rysunku 4, narzędzie Solution Explorer wyświetla strukturę elementów rozwiązania, która zawiera dwa projekty:

  • projekt MinApp. Jest to projekt utworzony przy użyciu szablonu aplikacji konsoli z funkcją Min (), którą chcesz zaprotestować;
  • Projekt TestMinApp. Ten projekt ma na celu przetestowanie funkcji projektu MinApp. Kod programu testujący funkcję Min () zostanie wprowadzony do pliku projektu UnitTest1 projektu TestMinApp.

Oba projekty mogą być realizowane niezależnie od siebie.

4.3. Tekst pliku „UnitTest1.cs”. Atrybuty [TestMethod] i [TestClass]

W projekcie TestMinApp plik testowy UnitTest1.cs ma podstawowe znaczenie. Ten plik zawiera metody, które przetestują funkcje projektu MinApp. Projekt TestMinApp może zawierać dowolną liczbę plików zawierających testy (na przykład UnitTest2.cs, UnitTest3.cs itp.).

Lista pliku UnitTest1.cs wygenerowanego przez MS Visual Studio 2010 jest następująca:

korzystanie z systemu; przy użyciu System.Text; przy użyciu System.Collections.Generic; przy użyciu System.Linq; przy użyciu Microsoft.VisualStudio.TestTools.UnitTesting; przestrzeń nazw TestMinApp {/// <summary> /// Podsumowanie opisu dla UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {public UnitTest1 () {// // TODO: Dodaj tutaj logikę konstruktora //} prywatny testContext testContextInstance; /// <summary> /// Pobiera lub ustawia kontekst testowy. /// </ summary> public TestContext TestContext {get {return testContextInstance; } set {testContextInstance = wartość; }} #region Dodatkowe atrybuty testowe // możesz użyć swoich testów // // Use ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Użyj ClassCleanup do uruchomienia kodu po uruchomieniu wszystkich testów w klasie // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Use TestInitialize aby uruchomić kod przed uruchomieniem każdego testu // [TestInitialize ()] // public void MyTestInitialize () {} // // Use TestCleanup ) {} // #endregion [TestMethod] public void TestMethod1 () {// // TODO: Dodaj tutaj logikę testową //}}}

Jak widać z powyższego kodu, plik zawiera klasę o nazwie UnitTest1. Klasa ma publiczną metodę o nazwie TestMethod1 (). Przed wdrożeniem metody TestMethod1 () umieszczany jest atrybut [TestMethod]. Oznacza to, że musisz wprowadzić kod, który przetestuje funkcje projektu MinApp w treści metody.

W klasie możesz wprowadzić dowolną liczbę metod, które przetestują różne funkcje z różnych modułów. Najważniejsze jest to, że metody te są oznaczone atrybutem [TestMethod].

4.4. Wprowadzanie zmian w tekście modułu UnitTest1. Zmiana nazwy metody testowania

Możesz zmienić nazwy metod i dodać nowe metody oznaczone atrybutem [TestMethod] w module UnitTest1.cs. Biorąc to pod uwagę, w tekście modułu UnitTest1.cs należy zmienić nazwę metody TestMethod1 () na TestMin ().

Po wprowadzeniu zmian skróconym tekstem modułu pliku UnitTest1.cs będzie:

korzystanie z systemu; przy użyciu System.Text; przy użyciu System.Collections.Generic; przy użyciu System.Linq; przy użyciu Microsoft.VisualStudio.TestTools.UnitTesting; przestrzeń nazw TestMinApp {/// <summary> /// Podsumowanie opisu dla UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {... [TestMethod] public void TestMin () {// // TODO: Dodaj test logika tutaj //}}}

4.5. Podłączanie projektu MinApp do projektu TestMinApp

Aby mieć dostęp do funkcji Min () (projekt MinApp) z projektu TestMinApp, należy połączyć przestrzeń nazw, w której znajduje się ta funkcja.

Aby to zrobić, przede wszystkim musisz wywołać menu kontekstowe projektu TestMinApp. Następnie w menu kontekstowym musisz wywołać polecenie „Dodaj odniesienie ...” (Rysunek 5).

” (Rysunek 5)

Rys. 5. Zespół „Dodaj Referencse ...”

W rezultacie otworzy się okno Dodaj odniesienie, w którym należy wybrać projekt MinApp.

Rys. 6. Okno „Dodaj odniesienie”. Łączenie projektu MinApp

Po zakończeniu działań funkcje projektu MinApp będą dostępne do użycia w projekcie TestMinApp.

Po zakończeniu działań funkcje projektu MinApp będą dostępne do użycia w projekcie TestMinApp

Rys. 7. Karta Referencje z połączonym projektem MinApp

4.6. Wprowadzanie zmian w tekście modułu UnitTest1.cs
4.6.1. Dodawanie przestrzeni nazw MinApp do modułu UnitTest1.cs

W tym kroku w module UnitTest1.cs należy dodać przestrzeń nazw MinApp za pomocą dyrektywy using:

korzystanie z systemu; przy użyciu System.Text; przy użyciu System.Collections.Generic; przy użyciu System.Linq; przy użyciu Microsoft.VisualStudio.TestTools.UnitTesting; przy użyciu MinApp; przestrzeń nazw TestMinApp {...}

4.6.2. Tekst metody TestMin ()

W tekście metody TestMin () wprowadź następujący kod:

... [TestMethod] public void TestMin () {// // TODO: Dodaj tutaj logikę testową // int min; min = Program .Min (3, 4, 5); Assert .AreEqual (2, min); } ...

4.7. Tekst modułu UnitTest1.cs

Tekst całego modułu UnitTest1.cs jest następujący:

korzystanie z systemu; przy użyciu System.Text; przy użyciu System.Collections.Generic; przy użyciu System.Linq; przy użyciu Microsoft.VisualStudio.TestTools.UnitTesting; przy użyciu MinApp; przestrzeń nazw TestMinApp {/// <summary> /// Podsumowanie opisu dla UnitTest1 /// </ summary> [TestClass] public class UnitTest1 {public UnitTest1 () {// // TODO: Dodaj tutaj logikę konstruktora //} prywatny testContext testContextInstance; /// <summary> /// Pobiera lub ustawia kontekst testowy. /// </ summary> public TestContext TestContext {get {return testContextInstance; } set {testContextInstance = wartość; }} #region Dodatkowe atrybuty testowe // możesz użyć swoich testów // // Use ClassInitialize // [ClassInitialize ()] // public static void MyClassInitialize (TestContext testContext) {} // // Użyj ClassCleanup do uruchomienia kodu po uruchomieniu wszystkich testów w klasie // [ClassCleanup ()] // public static void MyClassCleanup () {} // // Use TestInitialize aby uruchomić kod przed uruchomieniem każdego testu // [TestInitialize ()] // public void MyTestInitialize () {} // // Use TestCleanup ) {} // #endregion [TestMethod] public void TestMin () {// // TODO: Dodaj tutaj logikę testową // int min; min = Program .Min (3, 4, 5); Assert .AreEqual (2, min); }}}

5. Uruchom test i sprawdź wynik testu

W Microsoft Visual Studio 2010 specjalne menu poleceń o nazwie Test jest zaimplementowane do pracy z testami jednostkowymi.

Aby uruchomić test wykonania, wybierz jedno z poleceń.

Test -> Uruchom -> Testy w bieżącym kontekście

lub

Test -> Uruchom -> Wszystkie testy w rozwiązaniu

jak pokazano na rysunku 8.

Rys. 8. Wywołaj komendę start test i wyświetl wynik.

Po uruchomieniu testu wynik można wyświetlić na dole okna Wyniki testu. Jak widać z rysunku, test nie został zaliczony. Jest to logiczne, ponieważ w funkcji Assert.AreEqual () porównujemy liczby 2 i 3, które są różne. Tutaj liczba 2 jest specjalnie wprowadzona zamiast 3.

Jeśli zamiast liczby 2 wprowadzisz poprawną odpowiedź - numer 3 (minimum między 3, 4, 5), test zostanie zaliczony (Rysunek 9). W tym przypadku tekst metody TestMin () będzie następujący:

... [TestMethod] public void TestMin () {// // TODO: Dodaj tutaj logikę testową // int min; min = Program .Min (3, 4, 5); Assert .AreEqual (3, min); } ...

Okno wyników pokazano na rysunku 9.

Rys. 9. Wynik testu dla przypadku, jeśli wprowadzisz prawidłową odpowiedź

Teraz możemy stwierdzić, że funkcja Min () dla tego przypadku działa poprawnie.

6. Wynik. Interakcja między projektami

W tym dokumencie powstają dwa projekty. Jeden projekt MinApp zawiera funkcję Min (), którą chcesz przetestować. Drugi projekt, TestMinApp, zawiera metody testowania.

W Microsoft Visual Studio 2010 każdy projekt jest uruchamiany za pomocą różnych poleceń menu. Tak więc projekt MinApp jest uruchamiany w standardowy sposób z menu Uruchom. Projekt TestMinApp jest uruchamiany ze specjalnego menu Test.

Tematy pokrewne



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

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

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

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

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

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

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

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

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

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