1 / 27

NUnit - Unit Tests auf der .NET-Plattform

dotNET User Group Berlin Brandenburg. NUnit - Unit Tests auf der .NET-Plattform. Übersicht. Was ist Unit Testing? NUnit Test Framework Beispiel Integration in Visual Studio .NET Probleme. Was ist Unit Testing? Vergleich. Load testing: Kapazitäts-/Stress-test, Tuning

yakov
Download Presentation

NUnit - Unit Tests auf der .NET-Plattform

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. dotNET User Group Berlin Brandenburg NUnit - Unit Tests auf der .NET-Plattform Referent: Daniel Faensen

  2. Übersicht • Was ist Unit Testing? • NUnit Test Framework • Beispiel • Integration in Visual Studio .NET • Probleme

  3. Was ist Unit Testing? Vergleich • Load testing:Kapazitäts-/Stress-test, Tuning • Unit testing:Komponente losgelöst vom restl. System;Teil der alltägl. Arbeit eines Programmierers • System testing: Integrationstest • „Black box“ functional testing:Funktionalität <--> Spezifikation? (Input/Output) • „White box“ structural testing:Code-Struktur und -Organisation • Regression testing:Vergleich zur Vorgängerversion (Black box-Variante)

  4. Was ist Unit Testing? • XUnit • Gamma1/Beck2: Test Infected • Write Test First • XP • Refactoring (Fowler) • NUnit 1 GoF: Design Patterns 2 XP eXtreme Programming

  5. Was ist Unit Testing? Testideen • Jedes Objekt: • Null pointer • Strings: • Leerer String • Collections: • Leere Collection • Genau ein Element • Maximale Größe • Duplikate • Suchen • Nicht gefunden • Ein Treffer • Mehrere Treffer • Zahlen • 0 • Kleinste Zahl • Etwas kleiner als die kleinste Zahl • Größte Zahl • Gerade größer als größte Zahl • Zahlenpaare • Zusammen > max

  6. Was ist Unit Testing? Testideen • Bäume, Warteschlangen, Graphen • Leere Struktur • Minimale, nicht leere Struktur • Struktur mit Zyklen • Höhe > 1 (oder Höhe = max) • Gleichheit • Gleich aber nicht identisch • (apfel == birne) --> false • Unterschiedlich in Details

  7. Übersicht • Was ist Unit Testing? • NUnit Test Framework • Beispiel • Integration in Visual Studio .NET • Probleme

  8. NUnit Test Framework • Test Framework für .Net • Geschrieben in C# • Open Source (SourceForge, http://nunit.org) • Reflection / Custom Attributes • GUI oder Console • XML-Ausgabe

  9. NUnit Test Framework GUI

  10. NUnit Test Framework Attribute Test Cases werden durch Attribute markiert • Früher: Reflection + Namenskonvention public void method()

  11. NUnit Test Framework Assertion Tests verwenden Klasse NUnit.Framework.Assertion static public void Assert(string msg, bool condition) static public void AssertEquals(string msg, expected, actual) static public void AssertSame(string msg, expected, actual) static public void Fail(string msg) • Früher: Methoden in Superklasse TestCase

  12. Übersicht • Was ist Unit Testing? • NUnit Test Framework • Beispiel • Integration in Visual Studio .NET • Probleme

  13. Beispiel • Interface IMoney: Operationen auf Geldwerten verschiedener Währungen interface IMoney { ///<summary>Adds a money to this money.</summary> IMoney Add(IMoney m); ///<value>True if this money is zero.</value> bool IsZero { get; } ///<summary>Multiplies a money by the given factor.</summary> IMoney Multiply(int factor); ///<summary>Negates this money.</summary> IMoney Negate(); ///<summary>Subtracts a money from this money.</summary> IMoney Subtract(IMoney m); }

  14. Beispiel • Class Money class IMoney : IMoney { private int fAmount; private String fCurrency; ///<summary>Constructs a money from the given amount and /// currency.</summary> public Money(int amount, String currency) { fAmount= amount; fCurrency= currency; } ///<summary>Adds a money to this money.</summary> IMoney Add(IMoney m) { ; } ... }

  15. Beispiel • Erstellen eines Unit Tests namespace NUnit.Samples.Money { using NUnit.Framework; [TestFixture] public class MoneyTest { private Money f12CHF; private Money f14CHF; private Money f7USD; private Money f21USD; ... } Test-Kontext

  16. Beispiel [TestFixture] public class MoneyTest { private Money f12CHF; private Money f14CHF; private Money f7USD; private Money f21USD; [SetUp] protected void SetUp() { f12CHF= new Money(12, "CHF"); f14CHF= new Money(14, "CHF"); f7USD= new Money( 7, "USD"); f21USD= new Money(21, "USD"); } ... • SetUp und TearDown: Einheitlicher Kontext • Aufruf vor bzw. nach jedem Test Case

  17. Beispiel • Test Cases hinzufügen [TestFixture] public class MoneyTest { private Money f12CHF; private Money f14CHF; private Money f7USD; private Money f21USD; [Test] public void SimpleAdd() { // [12 CHF] + [14 CHF] == [26 CHF] Moneyexpected= new Money(26, "CHF"); Assertion.AssertEquals(expected, f12CHF.Add(f14CHF)); } ...

  18. Beispiel • Kompilieren--> schlägt fehl (Klasse Money fehlt) • Money implementieren (nur Signaturen) • Kompilieren --> Erfolg • NUnit-Test --> schlägt fehl • Money vervollständigen/korrigieren • Kompilieren • NUnit-Test --> Erfolg • Nächster Test Case

  19. Beispiel • Sehr ausführliches Beispiel in Kent Beck; Erich Gamma: Test Infected - Programmers Love Writing Tests(http://members.pingnet.ch/gamma/junit.htm)

  20. Übersicht • Was ist Unit Testing? • NUnit Test Framework • Beispiel • Integration in Visual Studio .NET • Probleme

  21. VS Integration • Create test project TestCases • Copy nunit-gui.exe to nunit-gui.dll • Add nunit-gui.dll andnunit.framework.dllto References • Add class TestRunner.cs • Set startup project and startup object • F5

  22. VS Integration

  23. VS Integration using System; using NUnit.Gui; namespace TestCases { public class TestRunner { [STAThread] static void Main() { NUnitForm form = new NUnitForm("TestCases"); System.Windows.Forms.Application.Run(form); } } } Assembly name

  24. VS Integration Alternative • Neue Configuration „Test“ • Im Startup Project unter Config. Properties -> Debugging • Debug Mode: Program • Start Application: C:\Path\To\Nunit-gui.exe • Command Line Args: C:\Path\To\TestCases.dll

  25. Übersicht • Was ist Unit Testing? • NUnit Test Framework • Beispiel • Integration in Visual Studio .NET • Probleme

  26. Probleme • Benutzeroberflächen • Web-Anwendungen(NUnitASP) • Asynchrones Verhalten • Stochastisches Verhalten • Menschliches Verhalten(Entwicklungskultur)

  27. dotNET User Group Berlin Brandenburg NUnit - Unit Tests auf der .NET-Plattform Referent: Daniel Faensen

More Related