【发布时间】:2012-06-09 16:35:22
【问题描述】:
我们有一个业务层分离的项目。这就像解决方案中独立项目中的许多服务(类)。我们还使用 ninject 来管理依赖关系。 业务层项目中的所有类都是内部的,它通过接口与“另一个世界”进行通信。 如果要创建包含测试的新项目,那么它不会看到内部类(但是我们可以做一个 hack 并在 AsseblyInfo 中将 Internal 声明为 Public)。
我真正需要知道的是需要测试什么:
我们可以为所有东西创建测试环境,并且只通过生成的接口进行测试(没有«clear» DAL,我们使用的是 linq2sql,但它可能会被模拟) 这种方式看起来不错,因为我们对内部 BisLayer 结构一无所知,只测试“合同”功能。但不好的一面是系统有很多选项、设置和绑定,而且似乎不可能或很难检查它的所有可能变体
我们可以将测试放在同一个项目中或设置属性以使 internal 被视为公共,这样我们就可以测试内部类。它很好,因为我们几乎可以测试所有东西,但是很难控制绑定,因为 Ninject 这样做会很好,而且我们只会覆盖我们在具体测试中需要的绑定。 也不清楚如何测试实现相同接口的类(并做类似的事情)。就像我们几乎没有 Cache 的实现,但每个实现都将数据保存在不同的位置(mssql、键值数据库、asp 缓存等),所以每个实现的测试实际上是相同的
【问题讨论】:
标签: c# unit-testing ninject