2017-08-23 4 views
-1

J'essaie de tester des méthodes de classes avec un modificateur d'accès privé et il n'est pas possible de modifier l'accessibilité de ces méthodes.Comment puis-je tester une classe avec des méthodes et des champs privés utilisant xUnit?

public class Form1 : Form 
{ 
    private void MyMethod(object sender, EventArgs e) 
    { 
     //business code 
    } 
    private void InitializeComponent() 
    {this.Load += new System.EventHandler(this.MyMethod); 
    } 
} 
+3

Vous ne les testerez pas à partir du test unitaire. Vous allez les tester en testant les méthodes et les propriétés publiques. – Fabio

+0

@Fabio Je n'ai pas de méthodes publiques, je n'ai que des méthodes privées et ils ont une logique métier que j'ai besoin d'exécuter des tests dessus. –

+0

Comment ça marche? Si votre classe n'a pas d'interface publique, comment cette logique peut-elle s'exécuter? – dymanoid

Répondre

-2

Vous pouvez faire des méthodes internes temporaires pour les tests:

internal void MyMethodForTest(object sender, EventArgs e) //test method 
{ 
    //business code 
} 

private void MyMethod(object sender, EventArgs e) //real method 
{ 
    //business code 
} 

Ensuite, ajoutez cette ligne de sorte que le test peut accéder à votre méthode interne:

[assembly:InternalsVisibleTo("UnitTest")] 

Une fois que vous avez terminé le test, Vous pouvez ensuite supprimer la méthode de test interne.