我有一个JUnit测试套件,有大约800个测试。其中大部分都与Spring连接,大量使用Mockito来模拟/监视行为。我开始遇到内存不足的错误。在分析hprof转储时,我注意到
在测试类完成后,是否有办法清除这些内容?我不想使用Mockito。重置(模拟),因为模拟初始化随每个测试而变化。如果没有,我似乎需要将测试分开以适应泄漏。
从这个链接来看,Mockito团队似乎认识到这些是作为执行后验证方法的权衡而保留的。但是我想知道是否有人已经找到了清除这些的方法,这样大量的单元测试就可以在一个套件中串在一起。
我找到了一份局部工作。在我的例子中,绝大多数的InvocationImpl
实例都是在一个测试用例中创建的,该测试用例使用spy()
创建一个真正的部分模拟,因此可以覆盖一个方法。我使用的是Mockito1.10。19,所以我将部分模拟结构从spy()
切换到mock(
虽然这可以防止在这个mock上使用
验证()
,但是斯图尔只有()
可以防止mock为测试期间对间谍的每次调用存储InvocationImpl
的实例,并显著减少堆的使用。
由于我的mock通常是在Spring上下文文件中使用Springockito创建的,因此我需要对bean定义进行一次难看的修改,以匹配
mock()
调用,如下所示。但这允许spy在Spring wired域类中使用。
<bean id="realInstance" class="<Real Instance Class>" />
<bean id="instSpySettings" class="org.mockito.Mockito" factory-method="withSettings" />
<bean id="instSpyPartialMock" factory-bean="instSpySettings" factory-method="spiedInstance">
<constructor-arg>
<ref local="realInstance" />
</constructor-arg>
</bean>
<bean id="instSpyDefaultAnswers" factory-bean="instSpyPartialMock" factory-method="defaultAnswer">
<constructor-arg><util:constant static-field="org.mockito.Mockito.CALLS_REAL_METHODS"/></constructor-arg>
</bean>
<bean id="instSpyStubOnly" factory-bean="instSpyDefaultAnswers" factory-method="stubOnly" />
<bean id="spyInstance" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="<Real Instance Class>" />
<constructor-arg>
<ref local="instSpyStubOnly" />
</constructor-arg>
</bean>
我正在用Mockito为一个项目设置jUnit测试。在被测系统(DrawingService)中调用方法时遇到问题。模拟包括图形和IDrawingRepository。 我不熟悉TDD、单元测试和一般的模拟,所以我可能犯了一些noob错误?任何帮助都将不胜感激。 以下是测试课程: 以下是正在测试的系统:
我正在尝试测试,只有在调用case的情况下,否则不会调用该方法。 但这会调用我的,并在内抛出空指针。因为我的行为不会调用,所以我如何在不调用的情况下测试它。
我认为自己是单元测试的新手,对McCito和JUnit完全陌生。我必须为一些简单的api调用编写单元测试。但我的测试对我来说似乎有点毫无意义,我不知道我哪里出了问题。我向现有的web服务ManagerWS添加了一个方法。java,见下文。 经理。java方法: 逻辑很简单。构造url,创建标头并将标头添加到请求中。发出请求并从响应中提取状态代码。这是我的测试。注意:类使用@RunAnd(Sprin
问题内容: 我有一个旧类,其中包含用于实例化LoginContext()的new()调用: 我想使用Mockito测试类来模拟LoginContext,因为它要求在实例化之前设置JAAS安全性,但是我不确定如何在不更改login()方法以外部化LoginContext的情况下进行此操作。是否可以使用Mockito模拟LoginContext类? 问题答案: 对于将来,我会推荐伊兰·哈雷尔(Eran
我试图验证一个模拟的方法()被调用了2次。不管出于什么原因,Mockito从来没有失败过测试,不管期望调用的次数是多少。我是这样使用它的:
我有下面一个班的方法。 使用mockito的junit测试用例将提供100%的代码覆盖率。