Spring 3 数据库方法的单元测试

发布于 2024-09-26 06:36:20 字数 452 浏览 0 评论 0原文

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

当我使用构造函数的 Spring 3 注解时,数据库及其方法在控制器中工作

private AbsractClass a;

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

...以及 a 的 getter。

调用数据库方法是由

getA().insertValues();

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

I have abstract class that defines database methods, such as inserts and updates, and a concrete class that implements it. The database configurations (dataSource, DatabaseTarget etc) are defined as beans in context.xml-file.

The database with its methods work in Controller when I'm using Spring 3 anotations by

private AbsractClass a;

Constructor:

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

...and a getter for a.

Calling database methods is done by

getA().insertValues();

But I would like to write Junit tests for my methods. Is there any example for this kind of situation? I have googled for hours.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅暮の光 2024-10-03 06:36:20

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

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

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

If you want to test your controller methods without touching the database (which is the correct way), create a new class that extends the AbsractClass and pass it as argument to your Controller class, example:

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

Another way is to use a Mock Object if you don't want to create extra fake classes in your project or you need to assert that these arguments are being correctly called.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文