2010-05-13 111 views
4

我在VBNET 2.0构建一个Active Directory包装(不能用后来.NET)中,我有以下几点:单元测试最佳实践?/C#InternalsVisibleTo()属性为VBNET 2.0而测试?

  1. IUtilisateur
  2. IGroupe
  3. IUniteOrganisation

这些接口在内部类(VBNET中的Friend)中实现,所以我想实现一个外观以便为每个接口内置类。这将允许架构更好的灵活性等

现在,我想在同一个解决方案中的不同项目来测试这些类(Utilisateur,阳狮集团,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的内部类来进行测试?否则,我怎么能做到这一点?

编辑这是一个很好的测试实践进行像我这样做?

回答

5

是的,InternalsVisibleTo属性在vb.net中可用,适用于Friend类型。

+0

它在.NET 2.0中工作?我应该导入什么样的组件来使用它? – 2010-05-13 13:23:21

+0

它在'System.Runtime.CompilerServices'中。更多信息在这里:http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute(VS.90).aspx?ppud=4 – 2010-05-13 13:32:46

+0

这是一个很好的做法,用于测试,或者是还有其他更好的解决方案吗 – 2010-05-13 13:42:12