Spring+Junit+Mockitoを使用してコードの自己測定を行います

5396 ワード

コードを再構築するときの完璧なテスト作業は私たちに大きな助けを与えることができます.次の時、私はMockitoのDemoを使って、Dubboの関連インタフェースを交換することを目的としています.Mockitoに詳しくない学生に参考に供します.junit:junit:4.11 org.springframework:spring-test:3.2.4.RELEASE org.mockito:mockito-all:1.10.19 jdk1.8
  • BaseTest
  • import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.MockitoAnnotations;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @ContextConfiguration(locations = {"classpath:spring/application.xml"})
    @RunWith(SpringJUnit4ClassRunner.class)
    public class BaseTest {
        @Before
        public void setup() {
            /**          mock  ,SpringJUnit4ClassRunner    ,  mock */
            MockitoAnnotations.initMocks(this);
        }
    
        @Test
        public void test() {
            Assert.assertEquals(1, 1);
        }
    }
  • MockTestDemo
  • import cn.idongjia.makalu.biz.PostBO;
    import cn.idongjia.makalu.domain.post.MakaluUser;
    import cn.idongjia.makalu.manager.ClanManager;
    import cn.idongjia.makalu.pojo.post.Post;
    import cn.idongjia.makalu.repo.PostRepo;
    import cn.idongjia.makalu.service.PostService;
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import org.junit.Test;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.mockito.Mockito;
    import org.mockito.Spy;
    
    import javax.annotation.Resource;
    import java.util.Optional;
    
    /*
     * service      @InjectMocks ,   setup        MockitoAnnotations.initMocks(this);    ,     
     * @Mock  @Spy        service  。
     *     @Mock,         ,service   provider   Mock    ,         Mock    。
     *     @Autowired   @Spy ,                Mock  ,            。
     */
    public class MockTestDemo extends BaseTest{
    
        @InjectMocks
        @Resource
        PostService postService;
    
        @InjectMocks
        @Spy
        @Resource
        private PostBO postBO;//   postService  
    
        @InjectMocks
        @Spy
        @Resource
        private PostRepo postRepo;//   postRepo  
    
        //Dubbo  
        @Mock
        private ClanManager clanManager;//   postRepo  
    
        @Test
        public void test() {
            System.out.println("======***************");
            /**
             *          。
             */
            User mu = new User();
            mu.setUsername("zzz");
    
            Optional user = Optional.of(mu);
    
            //             
            Mockito.when(clanManager.takeUser(21L)).thenReturn(user);
    
            Post post = this.postService.get(5L);
            System.out.println(String.format("  mock    :%s", post.getUsername()));//       
            System.out.println("======***************");
        }