2010-01-19 13 views
5

Ich habe gerade festgestellt, dass ich die doppelte Anzahl von Tests erhielt, die ich bekommen sollte. Habe es entdeckt, als ein Test fehlschlug und ich zwei identische Testfehler bekam. Gleicher Test, alles gleich. Hat mich ziemlich verwirrt, aber es geschafft, es auf eine bestimmte Testklasse zu beschränken, die eine teilweise Klasse war.NUnit, TestDriven.Net: Doppelte Testergebnisse mit partiellen Testklassen

Der Grund, warum es eine Teilklasse war, war, dass ich eine Testklasse in zwei geteilt hatte, nur um es etwas sauberer zu machen. Die zu testende Klasse hatte eine bestimmte Methode, die eine lange Reihe von Tests erforderte, und ich dachte, es wäre sauberer, diese in einer separaten Datei zu haben. Aber da es ein oder zwei Hilfsmethoden gab, dachte ich mir, ich könnte die Klasse nur teilweise machen, so dass beide Dateien immer noch Zugriff auf diese Methoden hatten.

Das Testframework ist NUnit und die Tests wurden mit TestDriven.Net ausgeführt. Die Tests wurden sowohl innerhalb einer einzelnen Testmethode (zwei Tests bestanden statt einer) als auch in der Klasse (doppelt so viele Tests bestanden) und im gesamten Testprojekt durchgeführt.

Verwaltet, um das Problem zu beheben, indem die Klassen nicht partiell gemacht werden und nur diese kleinen Hilfsmethoden dupliziert werden (möglicherweise werden diese in eine separate Hilfsklasse oder etwas später verschoben).

Jetzt ... warum in aller Welt geschieht das? Ich dachte, dass Teilklassen in einer einzigen Klasse zusammengefasst wurden? Ist das ein Problem mit Teilklassen im Allgemeinen, NUnit, Test-Driven.net oder etwas ganz anderem?

Antwort

2

Wahrscheinlich haben Sie das Attribut [TestFixture] in beide Dateien der partiellen Klasse geschrieben. Dies führt dazu, dass TestFixture zweimal in der IL-Klassendefinition ausgegeben wird und NUnit denselben Testcode zweimal ausführt. Sie sollten nur [TestFixture] in einer der Dateien für Ihre Teilklasse hinzufügen.

+0

Ooooh. Das könnte ja damit zu tun haben. Aber warum kann das 'TestFixture' Attribut zweimal zu einer Klasse hinzugefügt werden? Das macht einfach keinen Sinn ... oder ist das ein Grund dafür? – Svish

+0

Jetzt testen, und das 'TestFixture' Attribut aus einer der Teilklassen entfernen, behebt das Problem :) – Svish

Verwandte Themen