来自单元测试项目的项目引用

本文关键字:项目 引用 单元测试 | 更新日期: 2023-09-27 18:06:46

创建我的单元测试项目(NUnit)只是为了测试业务逻辑。这个逻辑的绝大部分都在我的业务逻辑项目中。我有一个单独的DLL与所有这些。我的应用是分层的,有UI、服务层、业务逻辑和数据访问层的项目。

当前,UI引用Service。业务引用提单,提单引用DA。全部通过项目参考。

我确实有一个共享项目,所有项目都引用它。它保存了DTO对象和一些共享的enum和一些代码位。

在我的数据访问器,我有一个类"数据库"(例如)。它有大量的数据操作方法……get Person, update Person等。我也有一个接口数据库在同一个项目。

在我的Test项目中,我想模拟数据库调用。但是我的BL中的构造函数有一个对数据库的引用,所以我可以使用IoC。为了能够模拟我的单元测试,我需要对数据库层有一个项目引用。这正常吗?这是因为IoC和调用方法需要向构造函数提供具体类。

来自单元测试项目的项目引用

您可以通过从数据库层提取与数据库相关的接口到BL中,并将它们注入构造函数而不是实际实现来解决这个问题。这实际上是推荐的,例如,如果你想要能够插入不同的层而不是DB(其他DB,文件/外部服务等)-这将只需要对这些接口(如IUserQuerier -> DbUserQuerier, FileUserQuerier等)的另一组实现