package com.lijun.mockito;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
/*******************************
* 对于final类,匿名类和JAVA基本类型是无法进行Mock的
* 对于static和final修饰的方法是无法进行设定的
*
*/
public class MockitoSampleTest {
// 对接口进行模拟
UserService mockUserService = mock(UserService.class);
// 对类进行模拟
UserServiceImpl mockServiceImpl = mock(UserServiceImpl.class);
@Mock
User mockUser;
@Before
public void initMocks() {
// 初始化当前测试类所有@Mock注解模拟对象
MockitoAnnotations.initMocks(this);
}
// 模拟接口UserService测试
@Test
public void testMockInterface() {
// 对方法设定返回值
when(mockUserService.findUserByUserName("tom")).thenReturn(
new User("tom", "1234"));
// 对方法设定返回值
doReturn(true).when(mockUserService).hasMatchUser("tom", "1234");
// 对void方法进行方法预期设定
User u = new User("John", "1234");
doNothing().when(mockUserService).registerUser(u);
// 执行方法调用
User user = mockUserService.findUserByUserName("tom");
boolean isMatch = mockUserService.hasMatchUser("tom", "1234");
mockUserService.registerUser(u);
assertNotNull(user);
assertEquals(user.getUserName(), "tom");
assertEquals(isMatch, true);
}
@Test
public void testMockClass() {
// 对方法设定返回值
when(mockServiceImpl.findUserByUserName("tom")).thenReturn(
new User("tom", "1234"));
doReturn(true).when(mockServiceImpl).hasMatchUser("tom", "1234");
User user = mockServiceImpl.findUserByUserName("tom");
boolean isMatch = mockServiceImpl.hasMatchUser("tom", "1234");
assertNotNull(user);
assertEquals(user.getUserName(), "tom");
assertEquals(isMatch, true);
}
@Test
public void testMockUser() {
when(mockUser.getUserName()).thenReturn("tom");
assertEquals(mockUser.getUserName(), "tom");
}
}
分享到:
相关推荐
2. **期望设置**:使用`EXPECT_CALL`或`ON_CALL`宏来设定mock对象的行为。`EXPECT_CALL`定义了何时以及如何调用某个方法,而`ON_CALL`则可以预先设定方法的返回值。 3. **验证和清理**:在测试结束后,通常会有一个...
EasyMock允许开发者精确地定义Mock对象的行为,包括期望的方法调用及其返回值,以及如何响应不同的调用顺序。这样,开发者可以编写单元测试,确保代码按照预期工作,即使在依赖行为不确定或不可预测的情况下。 以下...
我们可以使用Mock对象来模拟HttpClient的行为,例如,我们可以设定MockHttpClient在接收到特定请求时返回一个预设的HTTP响应。这样,我们就可以在不依赖真实网络服务的情况下测试我们的代码是否正确处理HTTP请求和...
1. **Mock对象**:EasyMock可以创建mock对象,它们的行为和返回值都可以被预先设定。在测试中,mock对象会记录调用历史,以便后续验证。 2. **期待(Expectations)**:在测试前,我们需要定义mock对象应如何响应...
在测试用例中使用“EXPECT_CALL”宏来设定期望和行为,其中包括期望被调用的次数和实际的返回值或动作。 Mock对象在使用中也需要注意几个重要的原则: 1. 对于内置类型或无返回值的函数,Mock对象会提供一个默认...
`Mock`对象,或者在Symfony和PHP的上下文中被称为“替身”或“仿件对象”,是一种在测试中用来模拟真实对象行为的技术。当我们测试一个服务类,比如`PostFactory`,这个类可能依赖于其他服务类,如果直接使用`new`...
1. **模拟对象(Mocks)**:这是Moq的基础,它代表了真实对象的模拟版本,允许开发者设定其行为和返回值。在测试中,你可以配置mock对象来模拟各种情况,比如成功、失败、异常等。 2. **期望(Expectations)**:在...
2. **配置Mock对象**:设定Mock对象的行为,如方法返回值、调用次数等。 3. **执行测试**:在测试代码中,使用Mock对象代替实际对象。 4. **验证行为**:测试完成后,检查Mock对象的记录,确认预期行为是否发生。 #...
2. **设置期望**:定义模拟对象在测试中的行为,包括返回值、抛出异常等。 3. **编写测试代码**:在测试用例中,使用 Mock 对象替代真实的依赖,并执行待测试的代码。 4. **检查结果**:验证模拟对象的期望是否得到...
3. **设置期望**:通过模拟对象的`expect`方法,设定对特定方法的调用期望,包括参数、返回值和调用次数。 4. **执行测试**:在测试方法中,进行实际的代码执行,这期间模拟对象将代替真实的对象工作。 5. **验证...
3. **设置期望**:定义模拟对象的方法调用行为和返回值。 4. **运行测试**:执行测试代码,此时模拟对象将替代真实对象参与执行。 5. **验证结果**:测试结束后,Mockery会自动验证模拟对象的行为是否符合预设的期望...
模仿对象(Mock Objects)是单元测试中常用的一种技术,它允许我们创建模拟真实对象的替代品,以便在测试中控制它们的行为和预期结果。"nMock" 是一个针对 .NET 平台的模仿对象框架,它使开发者能够更方便地创建和...
1. **模拟对象(Mock Object)**:EasyMock允许我们创建模拟对象,这些对象可以模仿真实对象的行为,但不会执行实际的业务逻辑。这样,我们可以在测试中专注于代码的单一行为,而不受其他依赖的影响。 2. **期望...
- 创建mock对象,指定期望的方法调用和返回值,然后在测试代码中使用这些mock对象,最后进行验证。 5. **Class Mocking** - Easymock可以模拟整个类的行为,包括静态方法,这对于测试那些难以实例化或有复杂依赖...
在创建Mock对象时,我们需要指定要模拟的对象类型,然后通过`.Setup()`方法定义模拟的行为,这通常包括设置方法调用的返回值。例如,在提供的示例中,`fakeTaxCalculator.Setup(tax => tax.GetTax(25.0M)).Returns...
4. **编写测试用例**: 在测试用例中,你可以使用mock对象来替代真实的依赖,并设定期望的行为。 5. **运行测试**: 执行测试,CMock会帮助验证被测试代码的行为是否符合预期。 6. **分析结果**: 根据测试结果,调整...
1. **模拟对象(Mock Object)**:EasyMock 创建的模拟对象用于代替真实的依赖,可以预定义其行为和预期调用。 2. **期望(Expectations)**:在测试中,你需要设定模拟对象应如何响应特定的调用,这称为期望。例如...
2. 录制Mock对象的方法调用和期望的返回值。 3. 通过`replay()`切换到回放模式。 4. 在测试方法中使用Mock对象。 5. 使用`verify()`确保所有录制的方法都被调用。 **其他用法** - 指定期望的调用次数。 - 指定...