2010-05-13 5 views
4

Я строю обертку Active Directory в VBNET 2.0 (не может использовать позже .NET), в котором у меня есть следующие:Лучшая практика тестирования модулей?/C# InternalsVisibleTo() для VBNET 2.0 во время тестирования?

  1. IUtilisateur
  2. IGroupe
  3. IUniteOrganisation

Эти интерфейсы реализованы во внутренних классах (Friend in VBNET), поэтому я хочу реализовать фасад, чтобы инициировать каждый из интерфейсов своими внутренними классами. Это позволит архитектуре повысить гибкость и т. Д.

Теперь я хочу протестировать эти классы (Utilisateur, Groupe, UniteOrganisation) в другом проекте в рамках одного и того же решения. Однако эти классы являются внутренними. Я хотел бы иметь возможность создавать их без прохождения моего фасада, но только для этих тестов, не более того.

Вот кусок кода, чтобы проиллюстрировать:

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; 
     } 
    } 
} 

Я слышал InternalsVisibleTo() атрибут, в последнее время. Мне было интересно, доступно ли это в VBNET 2.0/VS2005, чтобы я мог получить доступ к внутренним классам assmebly для своих тестов? В противном случае, как я мог достичь этого?

EDIT Является ли это хорошей практикой тестирования для продолжения, как я?

ответ

5

Да, атрибут InternalsVisibleTo доступен в vb.net и работает с типами Друг.

+0

Работает в .NET 2.0? Какую сборку я должен импортировать, чтобы использовать ее? –

+0

Он находится в 'System.Runtime.CompilerServices'. Больше информации здесь: http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute(VS.90).aspx?ppud=4 –

+0

И это хорошая практика для тестирования или есть ли другое лучшее решение? –

 Смежные вопросы

  • Нет связанных вопросов^_^