KontextWie man XUnit deskriptive Assert Nachricht implementieren?
in XUnit Github ich dies gefunden: Add Assert.Equal(expected, actual, message) overload #350(so ein Entwickler bitten um eine nicht vorhandene Überlastung siehe unten)
Zitat aus der Antwort:
Wir a sind Gläubiger in selbstdokumentiertem Code; das schließt deine Behauptungen ein.
(so die XUnit Team ablehnt)
OK, ich habe es. Ich glaube auch an den selbst dokumentierenden Code. Dennoch kann ich herausfinden, nicht diesen Anwendungsfall:
Probe
// Arrange
// Create some external soap service client and its wrapper classes
// Act
// client.SomeMethod();
// Assert
// Sorry, soap service's interface, behaviour and design is *given*
// So I have to check if there is no Error, and
// conveniently if there is, then I would like to see it in the assertion message
Assert.Equal(0, client.ErrorMessage.Length); // Means no error
// I would like to have the same result what would be the following *N*U*n*i*t* assert:
// Assert.AreEqual(0, client.ErrorMessage.Length, client.ErrorMessage); // Means no error
Frage
Wie kann ich eine beschreibende assert Nachricht in diesem Fall in XUnit implementieren, die noch keine solche eine Überlastung?
Ich bin unklar, was das Problem ist. Warum verwenden Sie nicht einfach 'Assert.AreEqual (0, client.ErrorMessage.Length, client.ErrorMessage);' wie Sie im Kommentar darauf hingewiesen haben? – Kritner
In XUnit gibt es keine solche Überlastung. Das ist ein NUnit-Anruf. Sehen Sie sich den ersten Satz an: Ein Entwickler bittet um eine solche Überladung, und das XUnit-Team lehnt das Zitat "Wir sind ein Anhänger von selbstdokumentiertem Code ab; das schließt Ihre Behauptungen ein" –
@ g.pickardou, Warum nicht die Vorschläge verwenden bereitgestellt am Link. Wie fließende Assertions oder erstellen Sie Ihre eigene Assertion, die die 'Assert.True oder Assert.False' umschließt, die mit ihren Nachrichtenüberladungen belassen wurden. Es wurde weiter unten erwähnt. Sie können Nachrichten für Assert.True und .False bereitstellen.Wenn Sie einfach nicht ohne Nachrichten leben können (und sich weigern, eine andere Behauptung zu verwenden), könnten Sie immer wieder auf folgende Adresse zurückgreifen: Assert.True (Nummer == 2, "This is my message"); ' – Nkosi