数据访问类设计:使类可测试,同时还包含依赖项

你好,世界

我需要一些设计建议。

我有一个应用程序,它将从各种来源读取数据并进行检查和比较。我的目的是有需要的数据访问(所有的依赖System.Data.SqlClient等)中含有一组数据访问类(内SqlImporterJSONImporter等等)。然后,需要数据的其他类将仅使用这些类来完成工作。也许他们会传递连接字符串或其他信息。

但是,我需要对这些数据访问类进行单元测试。为了使它们可测试,我使数据访问类依赖于抽象/接口,然后传入具体的实现,以允许我从单元测试中传入Mock对象,类似于使用MsTest在C#中的Mocking SqlConnection,SqlCommand和SqlReader

结果是这样的:

using System.Data.SqlClient;

public class SqlImport {
   private IDbConnection conn;

   public SqlImport(IDbConnection conn){
      this.conn = conn;
   }

}

我的问题是,使用这些数据访问类的所有类现在也都将依赖于数据访问依赖项(System.Data.SqlClient)。这是否会打败开设这些课程的目的?我的意思是,这对凝聚力很好,但是...

我现在有一个这样的课:

using System.Data.SqlClient;
using Importers;

public class Mapping {

   public Mapping (){
   }

   public void LoadMappingFromDatabase(string connString){
      SqlImport import = new SqlImport(new SqlConnection(connString));
      // Do Stuff including using import to query db
   }
}

这个设计好吗?还是我最好LoadMappingFromDatabase()直接在内部查询数据库,因为所需的依赖项已经在类中了?

科尼利厄斯·范·戴克

您的设计很好。using System.Data.SqlClient;为了允许自动测试,必须在代码中包含标头似乎是一个不错的权衡。;-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

包含不同数据的类的设计

来自分类Dev

如何在sbt程序集中包含测试类和测试依赖项

来自分类Dev

包含依赖项中的类的jar文件

来自分类Dev

将依赖项注入Facade类中包含的类中

来自分类Dev

用Java设计数据访问类

来自分类Dev

从静态类方法访问注入依赖项的Entity Framework数据库

来自分类Dev

在通过依赖注入提供单元可测试性的同时,将业务逻辑层与数据访问相关联放置在何处?

来自分类Dev

C#类设计问题以使其可测试

来自分类Dev

可移植类库的特定于平台的依赖项

来自分类Dev

可移植类库的特定于平台的依赖项

来自分类Dev

PHPUnit测试具有依赖项的类的特定方法

来自分类Dev

测试具有深层嵌套依赖项的类的行为

来自分类Dev

在AngularJS的类方法中无法访问注入的依赖项

来自分类Dev

设计:类循环依赖吗?

来自分类Dev

将依赖项注入到Facade类中包含的类中

来自分类Dev

从DependencyDescriptor访问“包含类”

来自分类Dev

Python类变量依赖项

来自分类Dev

cpp/PlatformIO 类依赖项

来自分类Dev

PHP MVC:配置类作为依赖项还是只有类常量,可以从整体访问?

来自分类Dev

类中的数据依赖

来自分类Dev

Eclipse with maven 在依赖项目的类路径中包含测试类

来自分类Dev

面向对象设计:具有不同依赖项的多态类?

来自分类Dev

Gradle不包含测试依赖项

来自分类Dev

嵌套类中的类可访问性

来自分类Dev

Maven测试类如何访问源类

来自分类Dev

WELD-001409类型[EagerBeansRepository]的模棱两可的依赖项

来自分类Dev

如何从嵌套类访问包含类的字段

来自分类Dev

Specs2:如何测试具有多个注入依赖项的类?

来自分类Dev

使用Gradle将提供的依赖项添加到测试类路径

Related 相关文章

热门标签

归档