Вы находитесь на странице: 1из 17

Automatisierung mit NANA Documentation

Release 0.1

Steinam

26. 02. 2010

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

Automatisierung mit NANA Documentation, Release 0.1

Inhaltsverzeichnis:

Inhaltsverzeichnis

Automatisierung mit NANA Documentation, Release 0.1

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

Automatisierung mit NANA Documentation, Release 0.1

Kapitel 1. Einfhrung

KAPITEL 2

Installation der beteiligten Komponenten

NANT wird als einfache gepackte Datei zum Download angeboten und muss nicht weiter installiert werden. Die ausfhrbare Datei bendet sich im Unterordner bin.

2.1 Struktur des Beispielprojektes


Beim Programm geht es um eine bereits in frhreren Zeiten verwendete selbstgeschriebene Stack-Klasse namens Stapel, die mit Hilfe von UnitTests (StackTest) berprft wird.

Automatisierung mit NANA Documentation, Release 0.1

Der Quellcode der entsprechenden Klassen sieht wie folgt aus:


using System; using System.Collections; namespace StackTest { /// <summary> /// Description of Stapel. /// </summary> public class Stapel { bool emptyState = true; //object myValue; tEST % GEHT SDO NICHT ArrayList myValue = new ArrayList(); /// <summary> /// Gibt an, ob der Stack leer ist oder nicht

Kapitel 2. Installation der beteiligten Komponenten

Automatisierung mit NANA Documentation, Release 0.1

/// </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>

2.1. Struktur des Beispielprojektes

Automatisierung mit NANA Documentation, Release 0.1

[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();

Kapitel 2. Installation der beteiligten Komponenten

Automatisierung mit NANA Documentation, Release 0.1

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

Automatisierung mit NANA Documentation, Release 0.1

C:\nant_stack\StackTest: Quellcode der Testklassen

10

Kapitel 2. Installation der beteiligten Komponenten

KAPITEL 3

Erstellen der Konguration

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

3.1 Struktur der Kongurationsatei


Die Kongurationsdatei wird mit Hilfe von XML-Tags beschrieben. Die grundlegende Struktur ist der sog. project Tag, der ein Projekt beschreibt. Innerhalb dieser Struktur denieren sog. Target-Tags die einzelnen zu erledigenden Aufgaben. Innerhalb der Target-Struktur werden dann die einzelnen Aufgaben durch sog. Tasks deniert. Ein Beispiel fr eine einfache Beschreibung knnte wie folgt aussehen:
<project name="Teacher" default="rebuild"> <target name="compileDebug"> <exec program="${devEnvPath}"> <arg value="c:/nant_stack/StackTest/StackTest.sln" /> <arg value="/build" /> <arg value="Debug" /> </exec> </target> <target name="rebuild" depends="compileDebug" /> </project>

</project>

11

Automatisierung mit NANA Documentation, Release 0.1

12

Kapitel 3. Erstellen der Konguration

KAPITEL 4

Indices and tables

Index Module Index Search Page

13

Вам также может понравиться