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