Tester une méthode statique privée en C# lors d'un test unitaire

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour,

Je veux tester une méthode statique qui est privée. J’ai trouvé un bout de code sur stackoverflow :

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MyLibraryTest
{
    [TestClass]
    public class MyClassTest
    {
        [TestMethod]
        public void TestMyMethod()
        {
            PrivateType privateType = new PrivateType(typeof(MyClass));

            Type[] parameterTypes =
            {
                typeof(int),
                typeof(int)
            };

            object[] parameterValues =
            {
                33,
                22
            };

            string result = (string)privateType.InvokeStatic("MyMethodToTest", parameterTypes, parameterValues);

            Assert.IsTrue(result == "result is 55");
        }
    }
}

Le problème c’est que PrivateType n’est pas reconnu. En cherchant un peu j’ai trouvé qu’il fallait ajouter Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll, ce que j’ai fait.

Image utilisateur
Image utilisateur

Selon le lien ci-dessous:

Documentation PrivateType

Mais visiblement ça ne change rien au problème.

Je ne suis pas un développeur C# expérimenté, je passe peut-être à côté de quelque chose de tout con …

Cdt,

+0 -0
Auteur du sujet

Ici c’est un deuxième sujet moins important (pour moi) que d’arriver à comprendre comment utiliser visual studio correctement.

Mais pour répondre à ta question, un test unitaire sert a déterminer si une méthode se comporte comme elle devrait. Qu elle soit publique ou privée ne me semble pas important.

Édité par obedient

+0 -0

Ici c’est un deuxième sujet moins important (pour moi) que d’arriver à comprendre comment utiliser visual studio correctement.

obedient

L’idée c’est que si tu n’as pas de raison d’être privé, alors ton problème est réglé, et sinon j’aurai écrit le test dans le même scope que la fonction que tu veux tester.

Mais pour répondre à ta question, un test unitaire sert a déterminer si une méthode se comporte comme elle devrait. Qu elle soit publique ou privée ne me semble pas important.

obedient

On a plutôt tendance à tester des fonctions exposées dont on fige le comportement. Tester tout ce qui est interne a plus tendance à rendre le développement difficile qu’autre chose.

+0 -0
Auteur du sujet

Je le conçois, mais sinon on peut revenir sur PrivateType ? En effet, je n’arrive pas à utiliser une classe malgrès la doc, je passe forcément à côté de quelque chose, non ?

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte