【发布时间】:2014-01-18 07:39:48
【问题描述】:
我是 junit 和 TDD 的新手。我打算用 Mockito 来测试我的 dao。
道接口:
package com.test.SpringApp.dao;
import java.util.List;
import com.test.SpringApp.bean.Account;
import com.test.SpringApp.bean.Person;
public interface TestDao {
List<Account> getAccountDetails(int account_id);
Person getPersonDetails(int person_id);
}
DaoImpl 类代码:
package com.test.SpringApp.dao;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import com.test.SpringApp.bean.Account;
import com.test.SpringApp.bean.Person;
public class TestDaoImpl implements TestDao {
private static final Logger logger = Logger.getLogger(TestDaoImpl.class);
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@Override
public List<Account> getAccountDetails(int account_id) {
try {
String query = "select * from account where account_id=?";
SqlRowSet rowset = jdbcTemplate.queryForRowSet(query,account_id);
Account account = null;
List<Account> accountDetails = new ArrayList<Account>();
while (rowset.next()) {
account = new Account();
account.setAccountId(rowset.getInt("accountid"));
account.setAccountType(rowset.getString("accounttype"));
accountDetails.add(account);
}
return accountDetails;
} catch (Exception e) {
// TODO: handle exception
logger.info("Error :" + e.getMessage());
return null;
}
}
private Person getPersonDetails(int person_id) {
try {
String query = "select * from Person where person_id=?";
SqlRowSet rowset = jdbcTemplate.queryForRowSet(query,person_id);
Person person = null;
while (rowset.next()) {
person = new Person();
person.setName(rowset.getString("name"));
stage.setNumber(rowset.getInt("number"));
}
return person;
} catch (Exception e) {
// TODO: handle exception
logger.info("Error :" + e.getMessage());
return null;
}
}
}
我正在使用上述接口和类从数据库中获取帐户和个人详细信息。有人可以解释一下如何使用 junit 和 Mockito 为上述 dao 接口和类编写测试用例。
我们将不胜感激:)
【问题讨论】:
-
为了有意义地测试你的 DAO,你需要一个数据库。最好为此使用一个小的内存数据库,否则您的测试将花费太长时间来运行并且设置起来太尴尬。我过去成功地使用了H2。祝你好运。
标签: java spring junit mocking dao