xUnit - narzędzie do testowania

2,669 views

Published on

Niniejszy plik jest materiałem reklamowym BNS IT s.c. i pozostaje własnością intelektualną BNS IT s.c.. Może być rozpowszechniany tylko w takiej postaci w jakiej jest. Używanie zawartych tu treści i form bez zaznaczenia autorstwa i pochodzenia pliku, zwłaszcza na użytek prowadzenia szkoleń, wykładów i wystąpień publicznych, jest zabronione.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,669
On SlideShare
0
From Embeds
0
Number of Embeds
926
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

xUnit - narzędzie do testowania

  1. 1. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Moduł 3 Niniejszy plik jest materiałem reklamowym BNS IT s.c. i pozostaje własnością intelektualną BNS IT s.c.. Może być rozpowszechniany tylko w takiej postaci w jakiej jest. Używanie zawartych tu treści i form bez zaznaczenia autorstwa i pochodzenia pliku, zwłaszcza na użytek prowadzenia szkoleń, wykładów i wystąpień publicznych, jest zabronione.
  2. 2. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Wprowadzenie do NUnit Wybrane atrybuty NUnit Asercje w modelu klasycznym Asercje w modelu ograniczeń
  3. 3. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Popularne narzędzie do testowania w  języku C#.  Test Runner uruchamia się jako niezależna aplikacja.  Narzędzie potrafi uruchamiać testy pojedynczo i zbiorowo. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 3
  4. 4. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Nastawiony na asercje.   Klasa testowa musi być oznaczona atrybutem [TestFixture].  Metody testowe muszą być oznaczone atrybutem [Test].  Testy ze względów porządkowych warto wydzielić do osobnego katalogu tests. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 4
  5. 5. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie namespace Bnsit.Tdd.Intro { Oznaczenie fixture [TestFixture] public class StringI18Test { Adnotacja oznaczająca test [Test] public void TestDifferentLanguageVersions() { Hashtable versions = new Hashtable(); versions.Add(quot;plquot;, quot;Dzień dobry przyjacieluquot;); versions.Add(quot;dequot;, quot;Hallo Freundquot;); Sprawdzenia - asercje versions.Add(quot;enquot;, quot;Hello friendquot;); StringI18n stringI18n = new StringI18n(versions); Assert.That(quot;Dzień dobry przyjacieluquot; .Equals(stringI18n.FindMessage( quot;plquot; ))); Assert.That(quot;Hallo Freundquot;.Equals(stringI18n.FindMessage(quot;dequot;))); Assert.That(quot;Hello friendquot;.Equals(stringI18n.FindMessage(quot;enquot;))); } } } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 5
  6. 6. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Klasa testowa musi spełniać  następujące warunki: musi być publiczna,  nie może być abstrakcyjna,  musi posiadać domyślny konstruktor.  Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 6
  7. 7. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [Test] - dana metoda zostanie  potraktowana jako test.  Metoda musi mieć sygnaturę public void NazwaMetody() namespace Bnsit.Tdd.Intro { [TestFixture] public class SampleTest { [Test] public void TestToString() { String text = quot;To jest napisquot;; Assert.That(text.ToString().Equals(quot;To jest napisquot;)); } } } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 7
  8. 8. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie ExceptionType – typ spodziewanego wyjątku  ExpectedMessage – spodziewany komunikat  UserMessage – komunikat w przypadku nie  wystąpienia wyjątku w odpowiedniej postaci MatchType – dopasowanie komunikatu Contains,  Exact, Regex [Test] [ExpectedException( ExceptionType = typeof(NullReferenceException), ExpectedMessage = quot;Odwołaniequot;, UserMessage = quot;Should be nullquot;, MatchType = MessageMatch.Contains )] public void TestExpectedException() { String text = null; Assert.That(text.ToString().Equals(quot;textquot;)); } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 8
  9. 9. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [TestFixtureSetUp] – metoda zostanie wykonana  raz przed wszystkimi testami w danej klasie. Zazwyczaj używana do inicjacji współdzielonych zmiennych przez wszystkie testy. Może być używana np. do inicjacji połączenia z bazą danych. [TestFixtureTearDown] – metoda zostanie  wykonana raz po wszystkich testach w danej klasie. Podobnie jak wyżej. Dotyczy procesu kończenia testu. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 9
  10. 10. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [TestFixture] public class StringI18Test { Hashtable versions = new Hashtable(); [TestFixtureSetUp] public void InitTests() { versions.Add(quot;plquot;, quot;Dzień dobry przyjacieluquot;); versions.Add(quot;dequot;, quot;Hallo Freundquot;); versions.Add(quot;enquot;, quot;Hello friendquot;); } [Test] public void TestDifferentLanguageVersions() { StringI18n stringI18n = new StringI18n(versions); Assert.That(quot;Dzień dobry przyjacieluquot; .Equals(stringI18n.FindMessage(quot;plquot;))); Assert.That(quot;Hallo Freundquot;.Equals(stringI18n.FindMessage(quot;dequot;))); Assert.That(quot;Hello friendquot;.Equals(stringI18n.FindMessage(quot;enquot;))); } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 10
  11. 11. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [SetUp] – metoda zostanie wykonana przed  każdym testem w danej klasie. Zazwyczaj używana do inicjacji współdzielonych  zmiennych przez wszystkie testy w klasie. Służy do ustawiania tego samego stanu początkowego  dla każdego testu . [TearDown] – metoda zostanie wykonana po  każdym teście w danej klasie. Podobnie jak wyżej. Dotyczy procesu kończenia testu. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 11
  12. 12. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [SetupFixture] – oznaczenie klasy, w której  znajdą się metody z atrybutami [SetUp] i [TearDown] Metody te wykonają się raz przed i po wszystkich  testach z wszystkich klas w danej przestrzeni nazw. Jeśli klasa z takim atrybutem znajduje się poza  przestrzenią nazw, będzie dotyczyć wszystkich testów w danym podzespole (ang. assembly). Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 12
  13. 13. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [Ignore] – test oznaczony tym atrybutem nie  wykona się. Służy do czasowego wyłączania testów.  [Test] [Ignore(quot;Test wycofanyquot;)] public void TestToString() { String text = quot;To jest napisquot;; Assert.That(text.ToString().Equals(quot;To jest napisquot;)); } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 13
  14. 14. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [Suite] – oznaczenie metody w klasie, która ma  uruchamiać zestaw testów Przydatne, gdy wśród testów możemy wyróżnić  grupy testów, które chcemy uruchamiać osobno. class SuiteTest { [Suite] public static IEnumerable Suite { get { ArrayList suite = new ArrayList(); suite.Add(new SampleTest()); suite.Add(new StringI18Test()); return suite; } } } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 14
  15. 15. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie [Category] – testy lub klasy testowe możemy  opatrywać nazwą. Przydatne, gdy wśród testów możemy wyróżnić  nazwą grupy testów, które chcemy uruchamiać osobno. [Test] [Category(quot;Introductoryquot;)] public void TestToString() { String text = quot;To jest napisquot;; Assert.That(text.ToString().Equals(quot;To jest napisquot;)); } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 15
  16. 16. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Assert.AreEqual( wartość_oczekiwana, wartość_aktualna [, string komunikat] ) Assert.AreEqual( wartość_oczekiwana, wartość_aktualna [, string komunikat] ) Należy zachowywać kolejność wartość oczekiwana –  aktualna, gdyż tylko wtedy komunikaty generowane przez NUnit będą w sposób prawidłowy informowały o przebiegu procesu testowania. Komunikat jest opcjonalny.  Można go dodać, aby uściślić przyczynę  niepowodzenia testu. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 16
  17. 17. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Assert.IsNull( referencja [, string komunikat] ) Assert.IsNotNull( referencja [, string komunikat] ) Sprawdza czy podana referencja to null lub nie null.  Assert.AreSame( referencja_oczekiwana, referencja_aktualna [, string komunikat] ) Assert.AreNotSame(referencja_oczekiwana, referencja_aktualna [, string komunikat] ) Sprawdza czy podane referencje wskazują  (lub nie) na ten sam obiekt. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 17
  18. 18. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Assert.IsTrue( bool warunek [, string komunikat] ) Assert.IsNotTrue( bool warunek [, string komunikat] ) Sprawdza czy podany warunek jest prawdziwy lub  fałszywy. Assert.Fail( [ string komunikat ] ) Powoduje, że test, którego sterowanie  dochodzi do tego miejsca, nie przechodzi.  Najczęściej używane do zaawansowanego testowania wyjątków. Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 18
  19. 19. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie Assert.That( bool warunek [, string komunikat] ) Assert.That( wartość_oczekiwana, IConstraint ograniczenie, [, string komunikat] ) W tym modelu używana jest pojedyncza metoda  Assert.That, zaś warunki sprawdzane są za pomocą obiektów ograniczeń. Na przykład: [Test] public void TestAssertThat() { String myString = quot;Helloquot;; Hashtable versions = new Hashtable(); Assert.That(myString, Is.EqualTo(quot;Helloquot;)); Assert.That(myString, Is.Not.Null); Assert.That(versions, Is.Empty); Assert.That(2 + 2, Is.GreaterThan(3) & Is.LessThan(5)); } Tworzenie i testowanie aplikacji z użyciem Test-Driven Development 19
  20. 20. Katalog szkoleń Harmonogram szkoleń Zadaj pytanie BNS IT Al. Wyszyńskiego 22/17 94-042 Łódź E-mail: bnsit@bnsit.pl Tel.:+48 42 209 38 45 Fax.: +48 42 209 38 63 Zwiększanie efektywności programistów i zespołów programistycznych 20

×