Questions tagged «mockito»

Mockito是Java的模拟框架。它受到EasyMock的启发,但旨在进一步简化模拟存根,验证和工具。

5
Mockito与JMockit之间的比较-为什么Mockito的投票比JMockit好?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在研究为项目使用哪种模拟框架,并将其范围缩小到JMockit和Mockito。 我注意到Mockito在Stackoverflow上被评为“ Java最佳模拟框架 ”。 在比较JMockit的“ 模拟工具比较矩阵 ”上的功能时,看来JMockit具有多个不同的功能。 是否有人对Mockito可以做什么(JMockit无法实现)有任何特定信息(无意见),反之亦然?

7
如何在Spring中使用Mockito模拟自动装配的@Value字段?
我正在使用Spring 3.1.4.RELEASE和Mockito 1.9.5。在我的春季班上,我有: @Value("#{myProps['default.url']}") private String defaultUrl; @Value("#{myProps['default.password']}") private String defaultrPassword; // ... 从我目前设置的JUnit测试中可以看到: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath:test-context.xml" }) public class MyTest { 我想为“ defaultUrl”字段模拟一个值。请注意,我不想模拟其他字段的值,我想保留它们的值,只保留“ defaultUrl”字段。另外请注意,setDefaultUrl我的班级中没有明确的“ setter”方法(例如),并且我不想仅为测试目的而创建任何方法。 鉴于此,我该如何模拟该字段的值?

2
Mockito:doAnswer与thenReturn
我正在使用Mockito进行服务稍后的单元测试。我doAnswer对何时使用vs 感到困惑thenReturn。 谁能详细帮助我?到目前为止,我已经尝试过使用thenReturn。
123 java  mockito 

2
Mockito匹配器如何工作?
争论的Mockito匹配器(如any,argThat,eq,same,和ArgumentCaptor.capture())从Hamcrest匹配器表现非常不同。 Mockito匹配器经常会导致InvalidUseOfMatchersException,即使在使用任何匹配器很长时间后执行的代码中也是如此。 Mockito匹配器遵循奇怪的规则,例如,如果给定方法中的一个参数使用匹配器,则仅要求对所有参数使用Mockito匹配器。 当覆盖Answers或使用(Integer) any()etc 时,Mockito匹配器可能导致NullPointerException 。 使用Mockito匹配器以某些方式重构代码会产生异常和意外行为,并且可能会完全失败。 为什么Mockito匹配器是这样设计的,如何实现?
122 java  mocking  mockito 

6
初始化模拟对象-MockIto
有很多方法可以使用MockIto初始化模拟对象。其中最好的方法是什么? 1。 public class SampleBaseTestCase { @Before public void initMocks() { MockitoAnnotations.initMocks(this); } 2。 @RunWith(MockitoJUnitRunner.class) [编辑] 3。 mock(XXX.class); 如果有其他方法可以建议我...
122 java  junit  mockito 

5
模拟第一个呼叫失败,第二个呼叫成功
我想使用Mockito测试下面的(简化)代码。我不知道如何告诉Mockito第一次失败,然后第二次成功。 for(int i = 1; i < 3; i++) { String ret = myMock.doTheCall(); if("Success".equals(ret)) { log.write("success"); } else if ( i < 3 ) { log.write("failed, but I'll try again. attempt: " + i); } else { throw new FailedThreeTimesException(); } } 我可以通过以下方式设置成功测试: Mockito.when(myMock).doTheCall().thenReturn("Success"); 以及失败测试: Mockito.when(myMock).doTheCall().thenReturn("you failed"); 但是,如何测试一次失败(或两次失败)然后成功,就可以了吗?
119 java  mockito 

2
@RunWith(MockitoJUnitRunner.class)vs MockitoAnnotations.initMocks(this)
在编写新的jUnit4测试时,我想知道是使用@RunWith(MockitoJUnitRunner.class) 还是MockitoAnnotations.initMocks(this)。 我创建了一个新测试,并且向导使用Runner自动生成了一个测试。MockitoJUnitRunner的Javadocs声明以下内容: 与JUnit 4.4和更高版本兼容,此运行器添加了以下行为: 初始化带有Mock注释的模拟,因此不需要显式使用MockitoAnnotations.initMocks(Object)。在每种测试方法之前都要初始化模拟。在每种测试方法之后验证框架使用情况。 我尚不清楚使用Runner是否比我过去使用过的initMocks()方法有任何优势。 任何想法或链接将不胜感激!
118 java  junit4  mockito 

7
如何验证具有不同参数的多个方法调用
我有以下方法,希望验证其行为 public void methodToTest( Exception e, ActionErrors errors ) { ... errors.add( "exception.message", ActionMessageFactory.createErrorMessage(e.toString() )); errors.add( "exception.detail", ActionMessageFactory.createErrorMessage(e.getStackTrace()[0].toString() )); ... } 在我的@Test类中,我希望做这样的事情来验证是否errors.add()使用“ exception.message”和再次使用“ exception.detail”进行了调用 verify(errors).add(eq("exception.message"), any(ActionError.class)); verify(errors).add(eq("exception.detail"), any(ActionError.class)); 但是Mockito抱怨​​如下 Argument(s) are different! Wanted: actionErrors.add( "exception.message", <any> ); Actual invocation has different arguments: actionErrors.add( "exception.detail", org.apache.struts.action.ActionError@38063806 ); 我如何告诉Mockito检查两个值?
114 java  mockito 

2
Mockito when()调用如何工作?
给出以下Mockito语句: when(mock.method()).thenReturn(someValue); 假设嘲笑方法将返回值传递给when(),那么Mockito如何为该嘲笑创建代理?我想这会使用一些CGLib的东西,但是想知道如何从技术上做到这一点。

12
使用Mockito测试Private方法
公开课A { 公共无效方法(布尔b){ 如果(b == true) method1(); 其他 method2(); } 私有void method1(){} 私有void method2(){} } 公共课程TestA { @测试 公共无效testMethod(){ 一个a =模拟(A.class); a.method(true); //如何像verify(a).method1();一样进行测试; } } 如何调用私有方法,以及如何使用Mockito测试私有方法???
104 java  junit  mockito 


3
使用PowerMockito.whenNew()不会被嘲笑,原始方法会被调用
我的代码如下所示: Class A { public boolean myMethod(someargs) { MyQueryClass query = new MyQueryClass(); Long id = query.getNextId(); // some more code } } Class MyQueryClass { .... public Long getNextId() { //lot of DB code, execute some DB query return id; } } 现在,我正在为编写测试A.myMethod(someargs)。我想跳过真正的方法query.getNextId(),而是返回一个存根值。基本上,我想嘲笑MyQueryClass。 因此,在我的测试案例中,我使用了: MyQueryClass query = PowerMockito.mock(MyQueryClass.class); PowerMockito.whenNew(MyQueryClass.class).withNoArguments().thenReturn(query); …
102 java  junit  mockito  powermock 

13
如何解决不必要的存根异常
我的代码如下 @RunWith(MockitoJUnitRunner.class) public class MyClass { private static final String code ="Test"; @Mock private MyClassDAO dao; @InjectMocks private MyClassService Service = new MyClassServiceImpl(); @Test public void testDoSearch() throws Exception { final String METHOD_NAME = logger.getName().concat(".testDoSearchEcRcfInspections()"); CriteriaDTO dto = new CriteriaDTO(); dto.setCode(code); inspectionService.searchEcRcfInspections(dto); List<SearchCriteriaDTO> summaryList = new ArrayList<SearchCriteriaDTO>(); inspectionsSummaryList.add(dto); when(dao.doSearch(dto)).thenReturn(inspectionsSummaryList);//got error …
100 java  junit  mockito 

2
如何验证一个非模拟对象的方法被调用?
似乎嘲笑仅验证是否调用了嘲笑对象的方法,并且嘲笑对象始终具有类似 doReturn().when(mock object) 但是我可以创建一个模拟对象并定义doReturn().when(mock object) 然后验证另一个对象的方法是否被调用吗? 这是我想做的事情:我定义了一个模拟环境,无论发生什么情况都返回一个响应。但是然后我想验证在不同情况下调用anotherObj的不同方法。 怎么做? public class BaseClass { private Environment mockEnvironment; @Test public void testcase () { setMockitoEnvironment(); response = foo(mockEnvironment, argument1); verify(anotherObj).codePath1(...); response = foo(mockEnvironment, argument2); verify(anotherObj).codePath2(...); } } //this method successfully return a response with any input //because I do not care how response …

26
无法初始化插件:接口org.mockito.plugins.MockMaker
一旦开始测试,我将收到以下异常信息: Testcase: treeCtorArgumentTest(com.xythos.client.drive.cachedtree.CachedTreeTest): Caused an ERROR Could not initialize plugin: interface org.mockito.plugins.MockMaker java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66) at com.sun.proxy.$Proxy7.isTypeMockable(Unknown Source) at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29) at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22) at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:168) at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:162) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:64) at org.mockito.Mockito.mock(Mockito.java:1687) at org.mockito.Mockito.mock(Mockito.java:1600) at com.xythos.client.drive.cachedtree.CachedTreeTest.setUp(CachedTreeTest.java:51) Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/dynamic/loading/ClassLoadingStrategy at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.<init>(SubclassByteBuddyMockMaker.java:33) at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.<init>(ByteBuddyMockMaker.java:22) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) …
99 mockito 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.