2017-10-16 2 views
-1

Je suis tryin pour tester une méthode statique privée comme ceci:Comment affirmer si une méthode vide statique privée couru sans erreur dans un test unité

public void myMethodTest() 
     { 
      MyClass target = new MyClass(); 
      PrivateType pt = new PrivateType(target.GetType()); 
      var x = pt.InvokeStatic("MyMethod"); 
      //Some type of Assert here 
     } 

La méthode utilise également une variable statique privée dans sa catégorie pour vérifier si son null, MyMethod est ce que im essayant de tester

private static HashSet<AnotherClass> fakeName{get;set;} 

private static void MyMethod() 
{ 
    if (null== fakeName) 
    { 
    fakeName = new HashSet<AnotherClass>(); 
    } 
} 

Merci les gars, si vous avez besoin plus de précisions s'il vous plaît laissez-moi savoir

Dans mon test si je le fais,

Assert.IsNotNull(x); 

le test échoue, im me demandais si la méthode est effectivement été appelé, je l'ai suivi cette réponse pour exécuter ce test Stack answer

+6

Vous ne testez pas directement les membres privés. Vous testez le comportement public de l'objet. Ce comportement public invoquerait en interne des membres privés. Si le comportement public fonctionne, l'objet fonctionne. – David

+4

[Ne pas tester le code interne ou privé] (http://blog.ploeh.dk/2015/09/22/unit-testing-internals). –

+0

ouais j'ai lu toutes ces choses, et je suis d'accord, mais quelques fois dans la vie on vous demande de faire quelque chose même si vous n'êtes pas d'accord, je dois donc les tester lol – JohnChris

Répondre

1

En utilisant Typemock Isolator vous pouvez:

public void myMethodTest() 
    { 
     MyClass target = new MyClass(); 
     Isolate.Invoke.Method<MyClass>("MyMethod"); 
     Isolate.Verify.NonPublic.WasCalled(typeof(Dependency), "MyMethod"); 
    } 

mais il est commercial .