日期:2014-05-18  浏览次数:21233 次

ssh与mybatis整合之后单元测试出错
ssh整合与mybatis整合后的单元测试,已经能取到待测试的实例,可是还报错,代码如下:
String flowInfoId = "61b28ec86cb4428c9fc1b078214af894";
//AffeBsI affeBsI=(AffeBsI)this.getBean("affeBs");
    BillExpendMapper billExpendMapper=(BillExpendMapper)this.getBean("billExpendMapper");
    AffeMapper affeMapper=(AffeMapper)this.getBean("affeMapper");
try {
//System.out.println(affeMapper.selectCostDetail("8ad3835f4502cfe4014502d444170003"));
//affeBsI.deleteBill(flowInfoId);
billExpendMapper.selectTravelPeerById("8ad3836d456e725e01456e7609100001");
} catch (Exception e) {

e.printStackTrace();
}
报错截图如下:
配置文件截图如下:

namespace对的上,字段与数据库和实体对的上,<select>的id也与接口名对的上,这是咋回事呢?
------解决方案--------------------
引用:
Quote: 引用:

有用的不发,没用的一堆。

错误说得再明白不过了,你调用的这个statement根本就没有注册到mybatis的configuration。

不发spring和mybatis的配置文件,发这么一堆东西有什么用?压根就没到执行sql的那步。

spring的配置文件为
mabatis的配置文件为:
还有就是上面的配置文件。你说对了sql语句没执行就报错了。但有一点你可能不知道,就是我功能测试的用到mybatis的地方时候可以用,就是mybatis可以正常运行,但是单元测试junit就直接sql语句没执行就报错了


我知道不知道这些有用吗?你要解决错误就从程序知道什么不知道什么入手,人知道不知道无所谓。

你的Junit里面没有spring,单独运行mybatis,你的所有mapper子文件都没有加载。

把mapperLocations属性删除,把mapper的import写到mybatis的主文件里去就可以都通过了。
------解决方案--------------------
引用:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { 
"/spring/spring-mvc-aop.xml", 
"/spring/spring-mvc-mybaits.xml", 
"/spring/spring-mvc-service.xml", 
"/spring/spring-mongo-config.xml" })
楼上正解,只是说单元测试从来不作为spring等的测试,是用来一个一个点的测试,只能说呵呵。
@ContextConfiguration(locations = {"classpath*:*.xml"})