单元测试与Spring

单元测试与Spring框架

参考博客
源代码

当进行单元测试的时候,需要给对象的依赖一个mock对象
但是对于Spring项目对象的私有成员,我们无法访问给他一个mock对象.这个时候我们就需要ReflectionTestUtils,他能够像Spring一样注入filed,通过手动给私有成员一个mock对象

1
2
3
4
5
6
7
8
9
10
11
public class ObjectA {
private String pwString;

public String getPwString() {
return pwString;
}

public void setPwString(String pwString) {
this.pwString = pwString;
}
}

被测试类

1
2
3
4
5
6
7
8
9
10
11
12
public class ObjectB {
private ObjectA objectA;

public ObjectA getObjectA() {
return objectA;
}

public void setObjectA(ObjectA objectA) {
this.objectA = objectA;
}

}

测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;

public class testMockito {
@Test
public void test() {
ObjectB objectB = new ObjectB();
ObjectA objectA = mock(ObjectA.class);
when(objectA.getPwString()).thenReturn("hello A");
//"objectA"是通过成员变量名字确定的
ReflectionTestUtils.setField(objectB, "objectA", objectA);

ObjectA actucalA = objectB.getObjectA();
assertEquals("hello A", actucalA.getPwString());
}
}