如何testing内部类库?

我想写一个类库,为我创build一个复杂的对象,但只应尽可能less的暴露。 我希望它被包含到其他项目中,在那里我只有一个调用这个库,例如返回一个内部创build类的对象。 我不想让别人明确地创build这些对象,但我仍然想为这个类库创build一个testing项目。

例如:

var result = Manager.Instance.Create(definition) 

这应该是对类库的唯一访问。

根据定义参数,它使用不同的子类来创build请求的实例并相应地设置其属性。 所以我想通过testing来保证整个创build过程正常。 但是因为我也不想公开很less的内部属性的结果对象我不能testing通过只使用这个公共访问方法,因为我没有任何属性来断言。

我知道你不应该testing内部的机制,这通常是不好的devise,我也阅读了这篇文章 ,但没有任何办法可以创build一个库加unit testing项目,也许以后限制访问这个类? 用包装什么的?

在.NET中,可以在类库中使用InternalsVisibleToAttribute ,以使您的内部types对您的unit testing项目可见。

这样,你可以保持你的课程内部,并仍然使用你从其他组件提供访问权限。

你这样使用它:

 [assembly:InternalsVisibleTo("NameOfYourUnitTestProject")]