(작업 노트) jmockit의 사용 - mock 사유 변수, 정적 변수, 코드 블록

3915 단어 작업 노트

카탈로그

  • 1. jmockit 설정
  • 2. 실례
  • 2.1 피측 대상
  • 2.2 테스트 클래스
  • 1. jmockit 설정


    변량
        
            1.43
        
    

    의지하다
    		
                org.jmockit
                jmockit
                ${jmockit.version}
                test
            
    

    구성(버전 1.42 이상은 필수)
    			
                    maven-surefire-plugin
                    2.21.0 
                    
                        
                            -javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
                        
                        
                    
                
    

    2. 실례


    2.1 피측 대상

    package com.test.service;
    
    /**
     * @author lu
     * @date 2018/12/13
     */
    public class JMockitoSupportService {
    
        private String privateData="privateData";
    
        private String constuctData;
    
        private static String staticData;
    
        {
            constuctData="constuctData";
        }
    
        static{
            staticData="staticData";
        }
    
        public boolean sayHello(String output){
            System.out.println(output);
            if(output.equals("true")){
                return true;
            }else{
                return false;
            }
        }
    
        public static boolean sayStaticHello(String output){
            System.out.println(output);
            if(output.equals("true")){
                return true;
            }else{
                return false;
            }
        }
    
        public final boolean sayFinalHello(String output){
            System.out.println(output);
            if(output.equals("true")){
                return true;
            }else{
                return false;
            }
        }
    
    
        public String getPrivateData() {
            return privateData;
        }
    
        public String getConstuctData() {
            return constuctData;
        }
    
        public static String getStaticData() {
            return staticData;
        }
    }
    
    

    2.2 테스트 클래스

    import com.test.service.JMockitoSupportService;
    import mockit.*;
    import mockit.internal.reflection.FieldReflection;
    import org.junit.Before;
    import org.junit.Test;
    
    
    public class JMockitNewTest {
    
    	// mock
        @Injectable
        String privateData="private Mock Data";
    
    	// mock
        @Injectable
        String constuctData="constuct Mock Data";
    
        @Injectable
        public static String staticData="static Mock Data";
        
    	// 
        @Tested
        JMockitoSupportService jMockitoSupportService;
    
        public static class JMockitNewMockTest extends MockUp{
    
    		//mock 
            @Mock
            void $init(Invocation invocation) {
                JMockitoSupportService jMockitoSupportService=invocation.getInvokedInstance();
                //1.44   1.45  
                Deencapsulation.setField(jMockitoSupportService,"staticData",staticData);
            }
            //mock 
            @Mock
            void $clinit(Invocation invocation){
    
            }
        }
    
    
        @Before
        public void setUp() {
            new JMockitNewMockTest();
            //1.45 
    //        FieldReflection.setFieldValue(JMockitoSupportService.class.getDeclaredField("staticData")
    //                ,jMockitoSupportService,staticData);
        }
    
        @Test
        public void testJMockit(){
            System.out.println(jMockitoSupportService.getConstuctData());
            System.out.println(jMockitoSupportService.getPrivateData());
            System.out.println(jMockitoSupportService.getStaticData());
            System.out.println(JMockitoSupportService.getStaticData());
        }
    
    }
    

    좋은 웹페이지 즐겨찾기