Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29360
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-17 16:06
文章分类

全部博文(13)

文章存档

2017年(5)

2016年(8)

我的朋友

分类: Java

2017-02-20 21:15:26

在业务测试时,有时需要加载spring容器进行业务测试,通过@Autowired加载服务,@Test执行测试用例可以实现大多公开方法的测试。

但是加载Spring容器过程较长。如果不想加载整个Spring容器,可以用mock方式加载若干依赖的对象。

此外,使用mock方式可以测试类的私有方法。还可以动态改变对象中任何域的值(包括私有域)。

接入方式如下:

1. 引入依赖

  1. <!--测试依赖-->
  2. <dependency>
  3.     <groupId>org.springframework</groupId>
  4.     <artifactId>spring-test</artifactId>
  5.     <version>4.1.1.RELEASE</version>
  6.     <scope>test</scope>
  7. </dependency>
  8. <dependency>
  9.     <groupId>junit</groupId>
  10.     <artifactId>junit</artifactId>
  11.     <version>4.9</version>
  12.     <scope>test</scope>
  13. </dependency>
  14. <dependency>
  15.     <groupId>org.mockito</groupId>
  16.     <artifactId>mockito-core</artifactId>
  17.     <version>1.10.19</version>
  18.     <scope>test</scope>
  19. </dependency>

2. 在测试类中mock出待测试的类实现

点击(此处)折叠或打开

  1. @InjectMocks
  2. private someServiceImpl someService;

3. 调用mock出来的类的私有方法,设置类中的私有域

点击(此处)折叠或打开

  1. @Test
  2. public void someTest() {
  3. ReflectionTestUtils.setField(someService, "variableName", variable);
  4. MethodResult methodResult = ReflectionTestUtils.invokeMethod(someService, "methodName", arg1, arg2);
  5. }

在加载某类的私有方法时,外部无法直接调用。此时可以通过ReflectionTestUtils改变对象的私有变量,调用对象的私有方法。(借用反射)


阅读(702) | 评论(0) | 转发(0) |
0

上一篇:EhCache

下一篇:测试初探

给主人留下些什么吧!~~