Академический Документы
Профессиональный Документы
Культура Документы
Release 0.1
Steinam
Inhaltsverzeichnis
1 2
Einfhrung Installation der beteiligten Komponenten 2.1 Struktur des Beispielprojektes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Ordnerstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellen der Konguration 3.1 Struktur der Kongurationsatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Indices and tables
3 5 5 9 11 11 13
ii
Inhaltsverzeichnis:
Inhaltsverzeichnis
Inhaltsverzeichnis
KAPITEL 1
Einfhrung
NANT (http://nant.sourceforge.net) ist ein Tool zum Erstellen von Skripten und ist damit ein wesentliches Element der Automatisation der Softwareentwicklung. Mit Hilfe von NANT ist es mglich, die Ablufe der verschiedenen Prozesse einer Softwareentwicklung unter einem Skript zusammenzufassen. Ein Vorlufer von NANT ist das java-basierte ANT (http://ant.apache.org), von dem es wesentliche Konzepte bernommen hat. Das Microsoft-eigene Build-Tool msbuild (http://msbuild.microsoft.com) hat sich wiederun an NANT orientiert und weitere Elemente hinzugefgt. Wer innerhalb der .NET-Plattform entwickelt, sollte sich daher mehr mit MSBUILD als mit NANT beschftigen. Im folgenden Tutorial soll innerhalb von 5 Runden das Zusammenfhren unterschiedlicher Aspekte der Softwareentwicklung dargestellt werden. Runde 1: Installation der entsprechenden Komponenten Runde 2: Lschen und Kompilieren des Quellcodes anhand verscheidener Variationen Runde 3: Ausfhren von Unit-Tests Runde 4: Aufruf eines Installers Runde 5: Generieren einer API-Dokumentation Das Tutorial setzt das .NET-Framework-SDK in der Version 4.0 voraus. Das .sln-File des Projektes ist mit der Version 11 deniert, welches die Verwendung von Visual Studio 2010 voraussetzt. Die verwendeten Tools sind: NUNIT (http://www.nunit.org) zum Erstellen und Durchfhren der Unit-Tests Doxygen (http://www.doxygen.org) zum Erstellen der API-Dokuemntation Innosetup (http://www.jrsoftware.org/isinfo.php) zum Erstellen des Installers
Kapitel 1. Einfhrung
KAPITEL 2
NANT wird als einfache gepackte Datei zum Download angeboten und muss nicht weiter installiert werden. Die ausfhrbare Datei bendet sich im Unterordner bin.
/// </summary> /// <returns>true fr leer, false fr voll</returns> public bool isEmpty() { return emptyState; } /// <summary> /// test 4 macht Halten eines Objektes notwendig /// </summary> /// <param name="value"></param> public void push(object value) { myValue.Add(value); emptyState = false; } /// <summary> /// Wird durch den 4. test von void auf object gendert /// </summary> public object pop() { emptyState = true; return myValue; } } }
Die entsprechenden UnitTests benden sich im Projekt StackTest und halten eine Referen auf die Klassenbibliothek Stapel
using System; using NUnit.Framework; namespace StackTest { /// <summary> /// Description of StapelTest. /// </summary> [TestFixture] public class StapelTest { static Stapel myStack; /// <summary> /// Wird bei jedem Aufruf einer testmethode vorher /// ausgefhrt /// </summary> [SetUp] public void Init() { myStack = new Stapel(); } /// /// /// /// <summary> Create a Stack and verify that IsEmpty is true. </summary>
[Test] public static void testOne() { Assert.IsTrue(myStack.isEmpty()); } /// <summary> /// Nach Hinzufgen eines Elementes muss /// isEmpty false zurckgeben /// </summary> [Test] public static void testTwo() { myStack.push("hello"); Assert.IsFalse(myStack.isEmpty()); }
/// <summary> /// Hinzufgen - Wegnehmen --> isEmpty ergibt true /// </summary> [Test] public static void testThree() { myStack.push("hello"); myStack.pop(); Assert.IsTrue(myStack.isEmpty()); }
/// <summary> /// Hinzufgen von hello und holen von hello muss eine ObjektGleichheit ergeben /// </summary> [Test] public static void testFour() { myStack.push("hello"); object x = myStack.pop(); Assert.AreEqual("hello", x); }
/// <summary> /// Hinzufgen und Wegnehmen mehrerer Elemente muss jeweils Objektgleichheit ergeben /// </summary> [Test] public static void testFive() { string a = "hello"; string b = "mr."; string c = "steinam"; myStack.push(a); myStack.push(b); myStack.push(c); object z = myStack.pop();
Assert.AreEqual(c, z); object y = myStack.pop(); Assert.AreEqual(b, y); object x = myStack.pop(); Assert.AreEqual(a, x); } } }
2.2 Ordnerstruktur
Die Struktur des Dateisystems ist wie folgt:
C:\nant_stack: Grundlegender Hauptordner C:\nant_stack\api_doc: Nimmt die von doxygen generierte API-Dokumentation auf C:\nant_stack\setup: Nimmt die Kongurationsdatei von Innosetup sowie das Ergebnis des Innosetup-Comilers (Setup.exe) setup.exe auf. C:\nant_stack\logles: Nimmt die Logles auf C:\nant_stack\nant_086bin: Ausfhrbare Datei nant.exe C:\nant_stack\Stapel: Quellcode der Stapel-Klasse
2.2. Ordnerstruktur
10
KAPITEL 3
NANT erwartet eine Beschreibung der aufzurufenden Prozesse in einer Kongurationsdatei. Diese wird standardmig default.build genannt. NANT sucht nach dem Aufruf im jeweils aktuellen Ordner nach dieser Datei. Andere Namen kann man per Parameter an NANT bergeben
</project>
11
12
KAPITEL 4
13