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

在学习JUnit单元测试时,作者遇到HttpServletRequest和HttpServletResponse的模拟问题,选择使用JMockit进行模拟。然而在使用过程中,遇到了'Invalid place to record expectations'错误。经过查找资料和排查classpath问题,发现测试类错误地继承了TestCase,删除继承后问题得到解决。作者计划后续研究为何继承TestCase会导致该错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天在慢慢学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会出问题,暂时还没去探究,所以先暂且记下这个问题,以后再找具体的原因。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值