2010-05-13 2 views
4

Je construis une enveloppe Active Directory dans VBNET 2.0 (ne peut pas utiliser plus tard .NET) dans lequel je donne les résultats suivants:Test d'unité de meilleures pratiques?/C# InternalsVisibleAttribut() pour VBNET 2.0 pendant le test?

  1. IUtilisateur
  2. IGroupe
  3. IUniteOrganisation

Ces interfaces sont implémentées dans des classes internes (Friend dans VBNET), de sorte que je souhaite implémenter une façade afin d'insérer chacune des interfaces avec leurs classes internes. Cela permettra une meilleure flexibilité de l'architecture, etc.

Maintenant, je veux tester ces classes (Utilisateur, Groupe, UniteOrganisation) dans un projet différent au sein d'une même solution. Cependant, ces classes sont internes. Je voudrais pouvoir les instancier sans passer par ma façade, mais seulement pour ces tests, rien de plus.

est ici un morceau de code pour l'illustrer:

public static class DirectoryFacade { 
    public static IGroupe CreerGroupe() { 
     return new Groupe(); 
    } 
} 

// Then in code, I would write something alike: 

public partial class MainForm : Form { 
    public MainForm() { 
     IGroupe g = DirectoryFacade.CreerGroupe(); 
     // Doing stuff with instance here... 
    } 
} 

// My sample interface: 

public interface IGroupe { 
    string Domaine { get; set; } 
    IList<IUtilisateur> Membres { get; } 
} 

internal class Groupe : IGroupe { 
    private IList<IUtilisateur> _membres; 

    internal Groupe() { 
     _membres = new List<IUtilisateur>(); 
    } 

    public string Domaine { get; set; } 
    public IList<IUtilisateur> Membres { 
     get { 
      return _membres; 
     } 
    } 
} 

j'entendu parler de InternalsVisibleTo() attribuer, récemment. Je me demandais s'il était disponible dans VBNET 2.0/VS2005 afin que je puisse accéder aux classes internes de l'expert pour mes tests? Sinon, comment pourrais-je y parvenir?

EDIT Est-ce une bonne pratique de test de procéder comme je le fais?

Répondre

5

Oui, l'attribut InternalsVisibleTo est disponible dans vb.net et fonctionne sur les types Friend.

+0

Cela fonctionne dans .NET 2.0? Quel assemblage devrais-je alors importer pour l'utiliser? –

+0

C'est dans 'System.Runtime.CompilerServices'. Plus d'informations ici: http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute(VS.90).aspx?ppud=4 –

+0

Et est-ce une bonne pratique pour tester, ou est y a-t-il une autre meilleure solution? –

Questions connexes