我正在为 DAO 类编写单元测试,我只是对其进行了一些更改。由于这个 DAO 的性能非常重要,所以我想对单元测试中的性能做一些检查。而且因为我对这个 DAO 的更改可能会导致多次查询,所以我想检查 DAO 是否只查询数据库一次。如果没有,单元测试应该失败。
我不知道这是否可能。请帮忙:)
我正在为 DAO 类编写单元测试,我只是对其进行了一些更改。由于这个 DAO 的性能非常重要,所以我想对单元测试中的性能做一些检查。而且因为我对这个 DAO 的更改可能会导致多次查询,所以我想检查 DAO 是否只查询数据库一次。如果没有,单元测试应该失败。
我不知道这是否可能。请帮忙:)
对于时间测试,您可以使用
超时注释之类的。
@Test(超时=500)
您可以注入代码(例如使用aspectJ)来计算数据库访问 - 每当您查询数据库时,都会增加一个计数器并进行时间测量。
一个更简单的解决方案是在测试上下文中实例化 DAO 时使用匿名类:
DAObject dao = new DAObject(){
@override
public void QueryDB(args){
incrementCounter();
long startTime = System.currentTimeMillis();
super.QueryDB(args);
_queryTime = System.currentTimeMillis() - startTime;
}
}
接着
assertEquels(counter,1);
assertTrue(_queryTime < MAX_ALLOWED_TIME);