tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
601
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Hallo!

    Ich beschäftige mich seit einiger Zeit mit Unit Tests unter NUnit und Testdriven.NET. Nun habe ich mal eine Verständnisfrage.
    Ich habe folgenden Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    public string meineZuTestendeFunktion(string Irgendwas)
    {
      (einiger Code...)
     
      string test = mySecondClass.gibIrgendwasZurueck("Test");
     
      (einiger Code...)
      return result;
    }

    Es wird also in einer zu testenden Funktion eine weitere Klasse aufgerufen, die ein Ergebnis liefert, mit dem weitergearbeitet wird.
    Ich muss nun diese Klasse irgendwie als Scheinklasse anlegen und meiner Test-Funktion beibringen, dass nicht die Orginal-Klasse angesprochen wird, sondern eben eine Scheinklasse.

    Wie aber tut man so etwas?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    [Test]
    public void testFunktion()
    {
      zuTestendeKlasse c = new zuTestendeKlasse();
      string result = c.meineZuTestendeFunktion("Hallo");
     
      Assert.AreEqual("Hallo Test", result);
    }

    Wie sage ich jetzt über meine Testfunktion, dass er in der zu testenden Funktion nicht die Klasse "mySecondClass" im Orginal anspricht, sondern eine Scheinklasse, die ein mir bekanntes Ergebnis liefert? Da die zu testenden Klasse ja in ihrem Orginal Kontext läuft, ruft sie automatisch ja auch ihre Orginal referenzierte Klasse auf... Irgendwie steh ich da grad völlig auf'm Schlauch...

    Ich hoffe ich habe nicht zu unverständlich geschrieben.
    Vielen Dank schon mal für Eure Mühe mir zu helfen!

    Viele Grüße.
    ..::SD::..
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Warum an dieser Stelle eine "Scheinklasse" verwenden? Kannst du mir den Hintergrund bitte näher erklären? Willst du vor der Implementierung die Tests schreiben? Oder was genau bezweckst du?
     

  3. #3
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Ich möchte die zu testende Klasse von allen anderen isolieren. Somit erhoffe ich mir ein Testergebnis, welches auch repräsentativ für mich ist.

    Oder hab ich etwas falsch verstanden in Sachen Testing?

    MfG
    ..::SD::..
     

  4. #4
    yan1 yan1 ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    Kirchdorf a. d. Krems, OÖ
    Beiträge
    213
    Bevor du die Klasse mit der Funktion "meineZuTestendeFunktion" testest, wirst du (normalerweise) sowiso die Klasse der Instanz "mySecondClass" testen, wenn du dann einen Fehler in der zweiten Klasse findest, kannst du dir sicher sein, dass der Fehler nicht in den Klassen liegt, die du in der aktuellen Klasse verwendest

    Lg, Yanick
     

  5. #5
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Ja, das dachte ich mir zuerst auch, aber das ist nicht ganz im Sinne von Softwaretests. Weil dann müsste ich generell davon ausgehen, dass die anderen Klassen funktionieren. Was aber, wenn der Test für eine tiefer liegende Klasse nicht ordentlich programmiert wurde und er somit evtl. nicht brauchbar ist?

    MfG
    ..::SD::..
     

  6. #6
    yan1 yan1 ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Ort
    Kirchdorf a. d. Krems, OÖ
    Beiträge
    213
    Hm... ich würde sagen du musst zuerst die anderen Klassen testen. Falls dies schon erledigt ist, musst du eig. darauf vertrauen dass diese Funktionen, was anderes wird dir ja sowiso nicht überbleiben.

    Wenn du beispielsweise Klassen aus dem .NET Framework benützt, hast du auch nur zwei Möglichkeiten:
    • Du testest sie nochmal - wenn du Zeit und Lust hast..
    • Du vertraust darauf und weißt, dass sie schon getestet wurden
    Lg, Yanick
     

  7. #7
    Avatar von SixDark
    SixDark SixDark ist offline Mitglied Brokat
    Registriert seit
    Nov 2002
    Ort
    British Virgin Islands
    Beiträge
    424
    Ich hatte nicht vor die Klassen aus dem Framework zu testen - das wäre auch ziemlich sinnfrei!
    Wenn ich aber darauf vertrauen muss, dass andere Klassen, die z.B. auch aus anderen Abteilungen kommen wirklich funktionieren und die Tests, die für diese existieren nicht nur "Dummy's" sind, dann kann ich das Testen auch sein lassen!
    Es muss doch eine Möglichkeit geben, die Klassen voneinander zu isolieren. Die komische Test-Foundation-Gruppe hat es ja so in ihre Standards geschrieben. Nur wie - das haben sie wohl vergessen...

    VG
    ..::SD::..
     

Ähnliche Themen

  1. Tests automatisieren
    Von lernen.2007 im Forum Java
    Antworten: 4
    Letzter Beitrag: 09.03.08, 12:28
  2. Unit tests für Servlets
    Von bspainkf36 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 20.04.06, 11:50
  3. Unit-Tests unter .NET
    Von Norbert Eder im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 13.02.06, 21:16
  4. bitte um TESTS
    Von akosch im Forum PHP
    Antworten: 12
    Letzter Beitrag: 21.05.03, 15:31