我想写一个类库,它为我创建一个复杂的对象,但应该尽可能少地暴露.我希望它被包含到其他项目中,我只有一个调用这个库,例如返回一个内部创建的类的对象.我不想让其他人明确地创建这些对象,但我仍然想为这个类库创建一个测试项目.
例如:
var result = Manager.Instance.Create(definition)
Run Code Online (Sandbox Code Playgroud)
这应该是对类库的唯一访问.
基于definition参数,它使用不同的子类来创建请求的实例并相应地设置其属性.因此,我想通过测试以某种方式确保整个创建过程运行良好.但是因为我也不想暴露结果对象的非常少的内部属性,所以我不能仅使用这种公共访问方法进行测试,因为我没有任何属性可以断言.
我知道你不应该测试内部机制,它通常是糟糕的设计,我也正在阅读这篇文章,但是没有任何方法可以创建一个库加单元测试项目,也许之后限制访问这个类?用包装纸什么的?
可能重复:
测试内部类
我喜欢将我的测试类放在一个单独的程序集中,这会导致测试内部类的一些问题.由于内部类和方法只在程序集内部可见,因此我的测试程序集无法看到这些类和方法.测试这些类的最有效方法是什么?我是否需要使用反射来访问我不想测试的方法?
与此问题相关的是,AssemblyInfo的生成如何工作?
我一直在放入InternalsVisibleTo程序集的第一类文件,我意识到它会很有用.使用其他程序集属性在AssemblyInfo中似乎更合适,但我不希望它被无意中覆盖.
那么,它应该去哪里?