2009-08-19 8 views
0

Lorsque je tente de générer un test unitaire pour la méthode suivante (dans une classe statique publique)Erreur lors de la création de tests dans Visual Studio

private static string[] GetFields(string line, char sep) 
{ 
    char[] totrim = { '"', ' ' }; 
    return line.Split(sep).Select(col => col.Trim(totrim)).ToArray(); 
} 

La sortie Tests dit:

While trying to generate your tests, the following errors occurred: 
This method or property cannot be called within an event handler. 

Il fonctionne si je rends la fonction publique - j'ai essayé de lancer Publicize.exe manuellement, il ne se plaint pas, mais ne fait aucune différence non plus.

Répondre

0

Si votre fonction est privée, son privé est. Aucun autre assemblage, y compris votre cadre de test, ne devrait pouvoir le voir directement. Vous devez soit le rendre public (ce qui peut casser votre modèle), exposer une fonction publique d'emballage que vous indiquez clairement est à tester seulement (qui est ouvert à l'abus) ou vous pouvez le rendre disponible à votre test unitaire le composant en ajoutant l'attribut suivant (en supposant que vous utilisez C#) à la classe qui contient GetFields

[assembly:InternalsVisibleTo("[your unit test component name]")] 

The Microsoft website has more information here

+0

Avez-vous testé ce? Pour autant que je puisse voir, la déclaration ne fait aucune différence. Les tests pour les méthodes privées ne sont toujours pas générés. Cependant, je peux changer en interne, et cela fonctionne, même sans la déclaration d'assemblage ... – Benjol

+0

Je devine vos tests et dans le même projet/composant que le code que vous testez. Cela devrait faire fonctionner l'option interne. Mon code fonctionne si vous avez vos tests dans des composants externes - c'est ainsi que nous avons actuellement des tests fonctionnant dans l'un de nos projets, donc ça marche –

Questions connexes