Spring 3 数据库方法的单元测试
我有一个定义数据库方法(例如插入和更新)的抽象类,以及一个实现它的具体类。数据库配置(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想在不接触数据库的情况下测试控制器方法(这是正确的方法),请创建一个扩展 AbsractClass 的新类并将其作为参数传递给您的 Controller 类,例如:
另一种方法是使用 模拟对象 如果您不想在项目中创建额外的假类或者您需要断言这些参数是被正确调用。
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:
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.