Frage

Ich möchte einem Komponententest eine „Nachricht“ hinzufügen können, sodass sie tatsächlich in der von NUnit generierten Datei TestResult.xml erscheint.Derzeit wird beispielsweise Folgendes generiert:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" />
</results>

Ich hätte gerne ein zusätzliches Attribut (bzw. einen Knoten), wie zum Beispiel:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." />
</results>

Die Idee ist, dass die obige „Nachricht“ irgendwie innerhalb der Testmethode selbst definiert wird (in meinem Fall zur Laufzeit generiert).Gibt es irgendwo eine Eigenschaft, die mir fehlt, um so etwas tun zu können?

War es hilfreich?

Lösung

Das geht vielleicht nicht auf den Punkt, aber wie wäre es, wenn Sie die Tests so benennen, dass sie angeben, was sie testen? Dann benötigen Sie die Nachricht möglicherweise nicht einmal.

Wenn es sich als absolut notwendig erweist, müssen Sie meiner Meinung nach Ihren eigenen Testrunner erstellen, der (unwillkürlich) ein zusätzliches Attribut aus dem Testfall liest und es an die Ausgabe anhängt.

Andere Tipps

In den aktuellen NUnit-Versionen können Sie Folgendes tun:

Assert.AreEqual(250.00, destination.Balance, "some message here");

Wobei „Some message here“ eine konstante Nachricht oder eine zur Laufzeit generierte und in einer String-Variablen gespeicherte Nachricht sein kann.Diese Meldungen werden jedoch nur in der Ausgabe angezeigt, wenn die Behauptung fehlschlägt.Normalerweise benötigen Sie jedoch nur Informationen zu fehlgeschlagenen Tests. Ich empfehle daher, eine Zeichenfolge zu erstellen, indem Sie jede vorherige Nachricht hinzufügen und diese Zeichenfolgenvariable dann als Nachricht in allen Ihren Asserts verwenden.Dadurch können Sie alle benötigten Informationen aus fehlgeschlagenen Tests gewinnen.

Ich kann zur Laufzeit nichts verfügbares sehen, aber es gibt ein paar Funktionen, die Sie vielleicht untersuchen möchten:Die Beschreibung Attribut und das Eigentum Beide Attribute fügen der XML-Ausgabedatei Text hinzu.Leider werden beide zur Kompilierungszeit definiert.

Sie können den TestContext verwenden, um ganz einfach jede gewünschte Nachricht zu schreiben.So bin ich eingerichtet.

Jeder meiner Tests wird von einer Testbasisklasse geerbt.Dadurch wird redundanter Code entfernt.

[TestFixture]
public class TestBase
{

    public IWebDriver driver;

    //[OneTimeSetUp] and [OneTimeTearDown] go here if needed

    [SetUp]
    public void Setup(){
         driver = Shortcuts.SetDriver("my browser");
    }

    [TearDown]
    public void TearDown()
    {
        driver.Quit();
        Comment("@Result: " + TestContext.CurrentContext.Result.Outcome.ToString());
    }

    public void Comment(string _comment)
    {
        TestContext.Out.WriteLine(_comment);
    }
    public void Error(string _error)
    {
        TestContext.Error.WriteLine(_error);
    }

}

Sie können sehen, dass die beiden unteren Funktionen jede Meldung oder jeden Fehler im TestContext ausschreiben.Dies funktioniert auch gut mit parallisierbaren Tests.

Ich kann diese übergeordnete Klasse dann verwenden, um meine Tests einzurichten und in meine Konsole zu schreiben.

//Role Management
public class RoleManagementTests : TestBase
{
    [TestCase]
    public void RoleManagement_7777_1()
    {
        Comment("Expected: User has the ability to view all roles in the system.");
        //Test goes here
    }
}

Jetzt können Sie die Ergebnisse in der Ausgabe (Visual Studio) und in TestResult.xml mit NUnit Console Runner sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top