Лучшая практика модульного тестирования?/ C # InternalsVisibleTo () атрибут для VBNET 2.0 во время тестирования? - PullRequest
4 голосов
/ 13 мая 2010

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

  1. IUtilisateur
  2. IGroupe
  3. IUniteOrganisation

Эти интерфейсы реализованы во внутренних классах (Friend в 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, чтобы я мог получить доступ к внутренним классам ассембли для моих тестов? Иначе, как мне этого добиться?

РЕДАКТИРОВАТЬ Это хорошая практика тестирования, чтобы продолжить, как я?

1 Ответ

5 голосов
/ 13 мая 2010

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

...