mockito如何自动化生成
时间: 2023-11-17 15:05:33 浏览: 45
Mockito本身并不提供自动化生成mock对象的功能,但是可以借助其他工具来实现自动化生成mock对象。其中比较常用的是使用mockito-inline和mockito-extension工具。
1. mockito-inline:是Mockito的一个扩展库,提供了一些实用的内联mock功能。其中之一就是支持自动化生成mock对象,可以通过使用@Mock注解来自动创建mock对象。示例如下:
```java
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
public class ExampleTest {
@Mock
List<String> mockList;
@InjectMocks
Example example;
@Test
public void testExample() {
when(mockList.get(0)).thenReturn("mock");
assertEquals("mock", example.testMethod());
}
}
```
在这个示例中,我们使用@Mock注解自动创建了一个List类型的mock对象,并且使用@InjectMocks注解将mock对象注入到Example类中。然后,我们可以像之前一样对mock对象进行配置和测试。
2. mockito-extension:是Mockito的另一个扩展库,提供了更多的功能和选项。其中之一就是支持使用自定义名称来自动化生成mock对象。示例如下:
```java
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.STRICT_STUBS)
public class ExampleTest {
@Mock(name = "mockList")
List<String> mockList;
@Test
public void testExample() {
when(mockList.get(0)).thenReturn("mock");
assertEquals("mock", mockList.get(0));
}
}
```
在这个示例中,我们使用@Mock注解自动创建了一个List类型的mock对象,并指定了名称为"mockList"。然后,我们可以像之前一样对mock对象进行配置和测试。
总之,使用Mockito进行自动化生成mock对象需要借助其他工具或扩展库来实现,但是可以帮助我们更快速方便地进行测试。