Dynamisch berechnet gegenüber dem festen Wert wie erwartet Ergebnis bei Unit -TestsC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Dynamisch berechnet gegenüber dem festen Wert wie erwartet Ergebnis bei Unit -Tests

Post by Anonymous »

Bei der Überprüfung des Code eines Praktikums habe ich einen Unit -Test gefunden, der so aussieht (bei dem die Variable DelipYnote während des Setups einen Wert zugewiesen hat, und die Methode lieferte[TestMethod]
public void InformFromDeliveryNote_WithMaxArticlesLimit_ReturnsCorrectNumberOfPages()
{
// Arrange
const int maxArticlesPerPage = 2;

// Act
List result = DeliveryNotePage.InformFromDeliveryNote(deliveryNote, maxArticlesPerPage).ToList();

// Assert
var totalArticles = deliveryNote.AllArticles.Count();
var expectedPages = (int)Math.Ceiling((double)totalArticles / maxArticlesPerPage);
Assert.AreEqual(expectedPages, result.Count);
}
< /code>
Mein erster Gedanke war, diesen Unit -Test als nicht sehr nützlich zu betrachten. Mein Begründung dafür ist, dass ein solcher Ansatz, der meiner Meinung nach etwas härter zu verstehen ist, die Ergebnisse der zu testenden Methode nicht testet, sondern nur ihre Implementierung nur dupliziert (was bedeutet, dass der Test wahrscheinlich auch dann bestehen wird, auch wenn die Implementierung falsch ist) und daher nach Möglichkeit vermieden werden sollte. Ich hätte den Test persönlich mit einem festen Wert geschrieben, anstatt ihn dynamisch zu berechnen und Kommentare hinzuzufügen, damit der Leser über die Variablen- und Eigenschaftswerte informiert worden wäre, die sonst nicht offensichtlich wären, indem der Unit -Test allein geschaut hat, wie folgt: < /p>
[TestMethod]
public void InformFromDeliveryNote_WithMaxArticlesLimit_ReturnsCorrectNumberOfPages()
{
// Arrange
const int maxArticlesPerPage = 2;

// Act
List result = DeliveryNotePage.InformFromDeliveryNote(deliveryNote, maxArticlesPerPage).ToList();

// Assert
// Delivery note has 3 items, which should be divided into 2 pages with a maximum of 2 items per page
Assert.AreEqual(2, result.Count);
}
< /code>
Ich weiß jedoch, dass der fragliche Praktikant KI viel verwendet (insbesondere Claude.ai), um seinen Code zu generieren, und so dachte ich, dass dies der Ansatz gewesen sein könnte, den die KI bevorzugte. Neugierig kopierte ich die beiden Ansätze und fragte die KI, die sie als die beste betrachtete, und zu meiner Überraschung wählte sie den ersten aus. Der Hauptgrund war, dass der erste Ansatz anpassungsfähiger ist und sein Erfolg oder Misserfolg nicht von den Werten der Eigenschaft des Liefernotizs während des Setups zugeordnet ist, was ihn anpassungsfähiger macht. Ich verstehe, dass mein aktueller Ansatz, der darin besteht, die Daten einer In-Memory-SQLite-Datenbank für Unit-Tests zu verwenden, bei der Wartung des Datensatzes und der zugehörigen Tests eher schwer sein kann. Diese Antwort hat jedoch nicht meinen Hauptpunkt angesprochen, dass der erste Ansatz zu ähnlich dem Produktionscode zu ähnlich ist, um tatsächlich nützlich zu sein. Als ich der KI diese ziemlich einfache Sorge äußerte, anstatt sie anzusprechen, änderte es sofort seine Melodie und stimmte plötzlich zu, dass der zweite Ansatz besser war und mich ziemlich verwirrt hatte. Ich wäre neugierig zu wissen, was erfahrenere Entwickler als beste Praxis ansehen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post