Laden...

XUnit Test einer Datenreihe

Erstellt von KuGBeginner vor einem Jahr Letzter Beitrag vor einem Jahr 525 Views
K
KuGBeginner Themenstarter:in
21 Beiträge seit 2015
vor einem Jahr
XUnit Test einer Datenreihe

Hallo an das Forum,

derzeit arbeite ich mich in das Thema XUnit ein und möchte meine Auswertungen einer Datenreihe testen.
Als Beispiel habe ich eine Datenreihe mit den Werten value = 0,3,10,12,14. Für diese benötige ich den Vorgängerwert, den ich
mittels einer List als prevValue an der Stelle x - 1 also 0,3,10,12 ermittle.

Ich finde im Internet keine Lösung für dieses Problem, sondern nur die Möglichkeit mit [InlineData] einzelne Berechnungen
durchzuführen (Beispiel result = value1 + value2, wobei value1 und value2 unterschiedliche Werte zugewiesen werden können)

Meine Frage lautet also: Wie kann ich eine beliebige Datenreihe an der Stelle 0, 1, 2, 3 usw. auf den Vorgängerwert
oder mittels [InlineData] auf andere Kriterien testen?

Vielen Dank für die Unterstützung
KuGBeginner

16.835 Beiträge seit 2008
vor einem Jahr

Dann hast Dir die Docs von XUnit nicht durchgelesen, denn dort gibt es auch sowas wie Theory, ClassData, MemberData...
https://hamidmosalla.com/2017/02/25/xunit-theory-working-with-inlinedata-memberdata-classdata/

Jede Datenreihe ist aber für sich isoliert; das ist die Grundidee von Unit Tests. Es gibt kein Kontext, mit dem auf andere Tests zugegriffen werden kann.
Die Attribute führen dazu, dass im Kompilat (man siehts bei der Test Discovery) jeder Test für sich steht, wie es vorgesehen ist.

K
KuGBeginner Themenstarter:in
21 Beiträge seit 2015
vor einem Jahr

Hallo Abt,

vielen Dank für den Hinweis.

Meine Methode verwendet folgen Code, in den 1000 Daten (CurrentInt) geschrieben werden.


     internal int NewInt(int CurrentInt)
        {
            PrevIntList.Add(CurrentInt);
            for (int i = 0; i < PrevIntList.Count; i++) { if (i >= 1) prevIntListValue = PrevIntList[i - 1]; }
            return prevIntListValue;
        }

Um zu testen, ob die Berechnung korrekt ist, muss ich die Methode(!) wenigstens zweimal aufrufen, um einen Vorgängerwert zu erhalten.
Die von Mosalla beschriebenen Methoden lösen dieses Problem nach meinem Verständnis nicht.
Mit InlinaData kann ich CurrentInt ändern; ich kann aber keinen Vorgängerwert testen.
Mit anderen Worten: Mein Verständnis von "Datenreihe" bezieht sich auf den Test der Methode und
nicht auf die verwendeten Variablen, worauf Du Dich zu beziehen scheinst.

Wie teste ich meine Methode korrekt oder ist das mit XUnit nicht möglich?

Danke

16.835 Beiträge seit 2008
vor einem Jahr

Um zu testen, ob die Berechnung korrekt ist, muss ich die Methode(!) wenigstens zweimal aufrufen, um einen Vorgängerwert zu erhalten.

Wenn die Methode zwei Mal aufgerufen muss, damit Du das validieren kannst (warum das auch immer so ist), dann gehört das in einen Unit Test und nicht in zwei Unit Tests.
Das dann in zwei Unit Tests packen zu wollen widerspricht dem, was Unit Tests sind.

Die Idee eines Unit Test Testfalls ist, dass dieser vollständig unabhängig von anderen Testfällen oder -Daten ist.
[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio
Unit testing

Sowas unterstützt ohne Hacks / Missbrauch kein Unit Test Framework.