Question

J'aimerais pouvoir ajouter un "message" à un test unitaire, de telle sorte qu'il apparaisse réellement dans le fichier TestResult.xml généré par NUnit.Par exemple, ceci est actuellement généré :

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

J'aimerais pouvoir avoir un attribut supplémentaire (ou un nœud selon le cas), tel que :

<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'idée est que le "message" ci-dessus serait en quelque sorte défini dans la méthode de test elle-même (dans mon cas, généré au moment de l'exécution).Y a-t-il une propriété quelque part qui me manque pour pouvoir faire quelque chose comme ça ?

Était-ce utile?

La solution

Cela manque peut-être l'essentiel, mais que diriez-vous de nommer les tests afin qu'ils indiquent ce qu'ils testent - alors vous n'aurez peut-être même pas besoin du message.

Si cela s'avère absolument nécessaire, je pense que vous devrez produire votre propre testeur qui (de mémoire) lirait un attribut supplémentaire du TestCase et l'attacherait à la sortie.

Autres conseils

Dans les versions récentes de NUnit, vous pouvez faire :

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

Où "Un message ici" peut être un message constant ou un message généré lors de l'exécution et stocké dans une variable chaîne.Ces messages n'apparaîtront cependant dans la sortie que si l'assertion échoue.Cependant, en général, vous n'avez besoin que d'informations sur les tests ayant échoué. Je vous recommande donc de créer une chaîne en ajoutant chaque message précédent, puis d'utiliser cette variable de chaîne comme message dans toutes vos assertions.Cela vous permet d’obtenir toutes les informations dont vous avez besoin en cas d’échec des tests.

Je ne vois rien de disponible au moment de l'exécution, mais il y a quelques fonctionnalités que vous souhaiterez peut-être étudier :le Description attribut et le Propriété Les deux attributs ajoutent du texte au fichier de sortie XML.Malheureusement, ils sont tous deux définis au moment de la compilation.

Vous pouvez utiliser TestContext pour rédiger facilement le message de votre choix.Voici comment je suis configuré.

Chacun de mes tests est hérité d'une classe testbase.Cela supprime le code redondant.

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

}

Vous pouvez voir les deux fonctions du bas écrire n'importe quel message ou erreur dans ledit TestContext.Cela fonctionnera également bien avec les tests parallélisables.

Je peux ensuite utiliser cette classe parent pour configurer mes tests et écrire sur ma 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
    }
}

Vous pouvez maintenant voir les résultats dans la sortie (Visual Studio) et dans TestResult.xml à l'aide de NUnit Console Runner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top