用jmockit打桩的方法可能有很多种
总结一下常用的三种
1. 用new MockUp<>()方法
2. 用Mockit.redefineMethods
3. 用Mockit.setUpMock
贴个例子:
1.业务类Biz 对其进行单元测试
2.Common类 测试时对其打桩
3.Single类 单例类 测试时也对其打桩
单元测试
1.不打桩测试
总结一下常用的三种
1. 用new MockUp<>()方法
2. 用Mockit.redefineMethods
3. 用Mockit.setUpMock
贴个例子:
1.业务类Biz 对其进行单元测试
- public class Biz {
- public void callCommon(){
- Common c = new Common();
- c.doA();
- Common.doB();
- c.doCC();
- }
- public void callSingle() {
- Single.getInstance().doA();
- }
- }
2.Common类 测试时对其打桩
- public class Common {
- public Common(){
- System.out.println("common constructor");
- }
- public Common(String str){
- }
- public void doA(){
- System.out.println("Common : doA()");
- }
- public static void doB() {
- System.out.println("Common : doB()");
- }
- public void doCC(){
- doC();
- System.out.println("Common : doCC()");
- }
- private void doC(){
- System.out.println("Common : doC()");
- }
- }
3.Single类 单例类 测试时也对其打桩
- public final class Single {
- private static Single ins = new Single();
- private Single(){
- }
- public static Single getInstance(){
- return ins;
- }
- public void doA() {
- System.out.println("Single : doA()");
- }
- }
单元测试
1.不打桩测试
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- public class BizTest1 {
- @Before
- public void setUp() throws Exception {
- }
- @After
- public void tearDown() throws Exception {
- }
- @Test
- public void testCallCommon() {
- new Biz().callCommon();
- }
- @Test
- public void testCallSingle() {
- new Biz().callSingle();
- }
- }
2.用new MockUp方法打桩
3.用Mockit.redefineMethods方法打桩
4.用Mockit.setUpMock方法打桩
- import mockit.Mock;
- import mockit.MockUp;
- import mockit.Mockit;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- public class BizTest2 {
- @Before
- public void setUp() throws Exception {
- new MockUp<Common>(){
- //mock 构造方法
- @Mock
- public void $init(){
- System.out.println("Mock init()");
- }
- //mock public 方法
- @Mock
- public void doA(){
- System.out.println("mock doA()");
- }
- //mock public static 方法
- @Mock
- public void doB(){
- System.out.println("mock doB()");
- }
- //mock private 方法 这里也需声明为public
- @Mock
- public void doC(){
- System.out.println("mock doC()");
- }
- };
- new MockUp<Single>(){
- //mock单例方法
- @Mock
- public void doA(){
- System.out.println("mock single doA()");
- }
- };
- }
- @After
- public void tearDown() throws Exception {
- Mockit.tearDownMocks();
- }
- @Test
- public void testCallCommon() {
- new Biz().callCommon();
- }
- @Test
- public void testCallSingle() {
- new Biz().callSingle();
- }
- }
3.用Mockit.redefineMethods方法打桩
- import mockit.Mockit;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- public class BizTest3 {
- @Before
- public void setUp() throws Exception {
- Mockit.redefineMethods(Common.class, MockCommon3.class);
- Mockit.redefineMethods(Single.class, MockSingle3.class);
- }
- @After
- public void tearDown() throws Exception {
- Mockit.tearDownMocks();
- }
- @Test
- public void testCallCommon() {
- new Biz().callCommon();
- }
- @Test
- public void testCallSingle() {
- new Biz().callSingle();
- }
- }
- class MockCommon3 {
- public void $init(){
- System.out.println("mock constructor");
- }
- public void doA(){
- System.out.println("mock doA");
- }
- public void doB(){
- System.out.println("mock doB");
- }
- public void doC(){
- System.out.println("mock doC");
- }
- }
- class MockSingle3 {
- public void doA(){
- System.out.println("mock single doA");
- }
- }
4.用Mockit.setUpMock方法打桩
- import mockit.Mock;
- import mockit.MockClass;
- import mockit.Mockit;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- public class BizTest4 {
- @Before
- public void setUp() throws Exception {
- Mockit.setUpMock(Common.class, MockCommon4.class);
- Mockit.setUpMock(Single.class, MockSingle4.class);
- }
- @After
- public void tearDown() throws Exception {
- }
- @Test
- public void testCallCommon() {
- new Biz().callCommon();
- }
- @Test
- public void testCallSingle() {
- new Biz().callSingle();
- }
- }
- @MockClass(realClass = Common.class)
- class MockCommon4 {
- @Mock
- public void $init(){
- System.out.println("mock constructor");
- }
- @Mock
- public void doA(){
- System.out.println("mock doA");
- }
- @Mock
- public void doB(){
- System.out.println("mock doB");
- }
- @Mock
- public void doC(){
- System.out.println("mock doC");
- }
- }
- @MockClass(realClass = Single.class)
- class MockSingle4 {
- @Mock
- public void doA(){
- System.out.println("mock single doA");
- }
- }