【问题标题】:Unit testing Spring 3 database methods单元测试 Spring 3 数据库方法
【发布时间】:2010-10-06 07:51:32
【问题描述】:

我有一个定义数据库方法的抽象类,例如插入和更新,以及一个实现它的具体类。数据库配置(dataSource、DatabaseTarget 等)在 context.xml 文件中定义为 beans。

当我使用 Spring 3 注释时,数据库及其方法在 Controller 中工作

private AbsractClass a;

构造函数:

@Autowired
public Controller(AbstractClass a) {
    this.a =a;
}

...a 的吸气剂。

调用数据库方法由

完成
getA().insertValues();

但我想为我的方法编写 Junit 测试。这种情况有什么例子吗?我已经用谷歌搜索了几个小时。

【问题讨论】:

  • 有哪些方法? DAO 方法,还是控制器方法?
  • 写dao测试是否应该依赖spring?数据层可以独立于 web 层进行测试,假设您不使用任何弹簧支持进行数据访问。另外,控制器是否应该直接访问与数据相关的类?也许这里应该涉及一些服务层。

标签: java unit-testing spring junit


【解决方案1】:

如果您想在不接触数据库的情况下测试您的控制器方法(这是正确的方法),请创建一个扩展 AbsractClass 的新类并将其作为参数传递给您的 Controller 类,例如:

CustomerController controller= new CustomerController(new InMemoryCustomerDao());
//call your actions and assert, all calls to the database will hit the InMemoryDao.

如果您不想在项目中创建额外的假类或需要断言这些参数被正确调用,另一种方法是使用Mock Object

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2016-02-11
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多