【发布时间】:2016-01-19 04:16:03
【问题描述】:
对不起,如果我问的是非常基本的问题,
我有一组网络服务(使用 .Net WebApi 开发)。这些服务要么是业务层 API,要么是数据访问层 API。这些 API 依赖于其他服务或数据库本身。
我想为它编写单元测试用例。我有以下问题
由于业务层 API 依赖于数据访问服务或其他一些服务。如果我编写单元测试只是为了调用业务 API,那么它将调用数据访问 API。这是编写单元测试用例的正确方法吗?还是应该用单元测试注入所有依赖对象?我认为之前的测试是集成测试而不是单元测试。
我应该为数据访问层编写单元测试吗?我检查了这个链接 (Writing tests for data access code: Unit tests are waste),它说 DAL 不需要单元测试。我是否还应该为数据访问层编写测试。我认为这将是集成测试而不是单元测试?
【问题讨论】:
-
对于 2,我认为这取决于您的 DAL 中有多少业务逻辑。如果有可测试的逻辑,那么单元测试可以帮助使代码可靠是理所当然的。如果 DAL 只是做简单的 CRUD 操作,我认为这对 UT 没有意义。对于 1,最佳实践建议您的所有服务都应该实现接口。如果 UI -> Business -> DAL,你可能有 IBusiness 和 IDAL,使得每个接口都可以通过 UT mocks 和 fakes 进行测试。
-
我认为人们过于沉迷于术语,希望听起来“正确”或“聪明”。拥有可以防止回归的测试是一件好事。这些测试是否涉及数据库或不涉及数据库在总体方案中并不重要。有测试==好,没有测试==坏。话虽如此,如果您想要纯单元测试,您应该使用伪造的实现注入所有依赖项。我喜欢 FakeItEasy,但还有其他框架可以帮助您做到这一点。如果您的 DAL 执行的逻辑超出了读取和返回数据的范围,您应该对其进行测试。
标签: c# .net unit-testing integration-testing moq