“Invalid place to record expectations”的解决方案

这两天在慢慢学junit,在写好一个简单的项目,要做单元测试时,打算从servlet开始测试,但是一上来就碰到了HttpServletRequest和HttpServletResponse这两个家伙。因为是接口,无法实例化,又不想自己写一个实现类,于是想到用jmockit来模拟这俩货。

    google被封,找jmockit的下载地址着实费劲,不过最终还是找到,地址是:http://jmockit.github.io。在上边下载好jmockit并导入之后,开始找教程。网上的教程一大把,很多都是转载来转载去的,我也就不再转了,提供链接就好:jmockit(很详细的一份教程,急性子表示还没仔细看,只是找了自己需要的部分,试用了一下)

Jmockit使用技巧(手机百度到的,感觉还挺清晰的)

JMockit学习笔记(同样是很不错的教程)

    至于使用过程中遇到的classpath中junit和jmockit的顺序错误,或者使用了“简洁版”jre的错误,解决方案也已经有了,我也按照那些解决方案一一修正,但是,修好运行测试的时候,还是出现了“Invalid place to record expectations”的错误,百度之,无果…着实烦恼了一阵。后来看了Expectations的构造函数,及之后的调用代码,判定是context出错,于是,又把思维导回到classpath中,多次确认没有问题之后,发现,自己的测试类的声明是这样的:

pubic class XXServletTest extends TestCase{...

原以为这个是不影响的,但删除了对TestCase的继承之后,运行正常了。想来是因为刚开始看junit的书的时候,书上的例子都是继承TestCase类的,于是自己也就默默保留了这个习惯,没想到在这里出了问题。不过,总算还好,误打误撞,还是绕出来了。

    至于为什么让测试类继承TestCase类之后,context会出问题,暂时还没去探究,所以先暂且记下这个问题,以后再找具体的原因。

你可能感兴趣的:(junit,单元测试,jmockit,单元测试,junit)