Domanda

Mi piacerebbe poter aggiungere un "messaggio" a uno unit test, in modo tale che appaia effettivamente all'interno del file TestResult.xml generato da NUnit.Ad esempio, questo è attualmente generato:

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

Mi piacerebbe poter avere un attributo aggiuntivo (o nodo a seconda dei casi), come ad esempio:

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

L'idea è che il "messaggio" di cui sopra venga in qualche modo definito all'interno del metodo di test stesso (nel mio caso, generato in fase di esecuzione).C'è una proprietà da qualche parte che mi manca per poter fare qualcosa del genere?

È stato utile?

Soluzione

Questo potrebbe non cogliere il punto, ma che ne dici di nominare i test in modo che indichino ciò che testano, quindi potresti non aver nemmeno bisogno del messaggio.

Se si rivela assolutamente necessario, penso che dovrai produrre il tuo testrunner che (in cima alla mia testa) leggerà un attributo aggiuntivo dal TestCase e lo allegherà all'output.

Altri suggerimenti

Nelle recenti versioni di NUnit puoi fare:

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

Dove "Qualche messaggio qui" può essere un messaggio costante o un messaggio generato in fase di esecuzione e archiviato in una variabile stringa.Tuttavia, questi messaggi verranno visualizzati nell'output solo se l'asserzione fallisce.Di solito, tuttavia, hai solo bisogno di informazioni sui test falliti, quindi ti consiglio di creare una stringa aggiungendo ogni messaggio precedente e quindi di utilizzare quella variabile stringa come messaggio in tutte le tue asserzioni.Ciò ti consente di ottenere tutte le informazioni di cui hai bisogno dai test falliti.

Non riesco a vedere nulla di disponibile in fase di esecuzione, ma ci sono un paio di funzionalità che potresti voler esaminare:IL Descrizione attributo e il Proprietà entrambi gli attributi aggiungono testo al file di output XML.Sfortunatamente, sono entrambi definiti in fase di compilazione.

Puoi utilizzare TestContext per scrivere facilmente qualsiasi messaggio desideri.Ecco come sono configurato.

Ciascuno dei miei test è ereditato da una classe testbase.Questo rimuove il codice ridondante.

[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);
    }

}

Puoi vedere le due funzioni inferiori scrivere qualsiasi messaggio o errore in detto TestContext.Funzionerà bene anche con test parallizzabili.

Posso quindi utilizzare quella classe genitore per impostare i miei test e scrivere sulla mia console.

//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
    }
}

Ora puoi visualizzare i risultati nell'output (Visual Studio) e nel file TestResult.xml utilizzando NUnit Console Runner.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top