Nunit: Comment tester une classe de base spécifique ?

Créé le 12 juil. 2017  ·  5Commentaires  ·  Source: nunit/nunit

J'ai une classe que je veux tester qui a été héritée dans le même assembly. Cette classe a une fonction de test qui doit être testée uniquement sur la classe de base. Je veux que le test ne s'exécute qu'une seule fois, pas sur hérité

Comment pourrais-je faire?

duplicate

Tous les 5 commentaires

Salut @Thaïna ! On parlait justement de ça. Voici ce que je vous recommanderais de faire : https://github.com/nuni/nunit/issues/2309#issuecomment -313936931 Cela correspond-il à vos besoins ?

Oups, mauvais bouton. ??

@jnm2 Eh bien, pas si mal parce que c'est le cas. Mais je pense juste qu'il devrait être pris en charge nativement cependant

Merci de nous avoir fait part de votre avis. Je pense que vous n'êtes que la deuxième personne à le demander jusqu'à présent, mais nous reconsidérerons si suffisamment de personnes finissent par le demander.

@Thaina Vous essayez de faire quelque chose pour lequel NUnit n'est pas conçu, donc toute demande de modification est une demande de modification du fonctionnement fondamental de NUnit. Cela ne veut pas dire que c'est impossible, mais cela signifie (1) que vous avez besoin de bonnes raisons pour lesquelles nous pourrions le faire et (2) vous devriez au moins considérer comment les concepteurs de NUnit pensaient que ce genre de situation devrait fonctionner.

Si je comprends ce que vous dites, vous avez un test écrit comme celui-ci...

```C#
classe publique
{
// Peut-être une configuration et un démontage communs et d'autres tests

[Test]
public void SomeTest() { }

}

classe publique DerivedClass : BaseClass
{
// Cette classe exécute ses propres tests plus SomeTest de la base
}

`SomeTest` runs on both the base class and the derived class. You want it to run on only the base class. According to the intended design of NUnit, we would expect your base class to be abstract and we would run it only on the __derived__ class. However, you want to run it only on the __base__ class. In order to do that, our standard recipe would be as follows:

```C#
public abstract class BaseClass
{
    // Maybe common setup and teardown and other tests
}

public class DerivedClass1 : BaseClass
{
    // This class runs it's own tests plus SomeTest from base
}

public class DerivedClass2 : BaseClass
{
    [Test]
    public void SomeTest() { }
}

Dans cette conception, la classe de base n'est jamais exécutée directement. Il participe par héritage à l'exécution des deux classes dérivées. Ce n'est évidemment pas la seule façon dont cela aurait pu être fait, mais c'est ainsi que NUnit a été conçu pour fonctionner. Les classes de base sont censées être abstraites et ne fournir aucun test directement. Ils ne les fournissent qu'aux classes qui en dérivent.

Ceci est une description du fonctionnement actuel de NUnit. Si vous pouvez vous adapter à ce modèle, la vie sera plus facile, même si vous pouvez toujours nous demander de changer les choses à un moment donné.

Cette page vous a été utile?
0 / 5 - 0 notes