51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

如何写private方法的单元测试

如何写private方法的单元测试 {#toc_h2_0}

由于 Java 私有方法不允许在类的外部进行访问,当我们在写 junit 测试的时候,就无法像测试其他方法一样通过对象调用的方式对 private 方法进行单独测试,下面分享测试私有方法的方式:

首先我们定义一个类的私有方法 add() :

                  public class CalculatorUtil { private int add(int a, int b) { return a + b; } }                  

    <svg>
                      <use xlink:href="#vditor-icon-copy" />
                    

    </svg>
                  </span>



  
  
                
                  public class CalculatorUtil {
    private int add(int a, int b) {
        return a + b;
    }
}

                </code>
              </pre>



 
### 使用 PowerMock 测试私有方法 {#toc_h3_1}


 
Java 单元测试中比较流行的 Mock 测试框架有jMock、EasyMock、Mockito等,但是这些 Mock 工具都不能 Mock static、final、private 方法等,而PowerMock能够做到,而且还支持对私有方法进行测试

 
### 引入PowerMock依赖 {#toc_h3_2}


 
使用前需要先引入PowerMock依赖

 
      
        
                      <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.4</version> <scope>test</scope> </dependency>                  

        <svg>
                          <use xlink:href="#vditor-icon-copy" />
                        

        </svg>
                      </span>



      
        
                    
                      <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito2</artifactId>
        <version>2.0.4</version>
        <scope>test</scope>
    </dependency>

                    </code>
                  </pre>



     
    ### 调用方法代码示例 {#toc_h3_3}


     
          
              
                          public class CalculatorUtilTest { private CalculatorUtil calculatorUtil; @Before public void setUp() { calculatorUtil = new CalculatorUtil(); } @Test public void testAdd() throws Exception { int result = Whitebox.invokeMethod(calculatorUtil, "add", 1, 2); assertThat(result, is(equalTo(3))); } }                  

            <svg>
                              <use xlink:href="#vditor-icon-copy" />
                            

            </svg>
                          </span>



          
              
                        
                          public class CalculatorUtilTest {

            private CalculatorUtil calculatorUtil;

            @Before
            public void setUp() {
                calculatorUtil = new CalculatorUtil();
            }

            @Test
            public void testAdd() throws Exception {
                int result = Whitebox.invokeMethod(calculatorUtil, "add", 1, 2);
                assertThat(result, is(equalTo(3)));
            }




        }


                        </code>
                      </pre>



         
        ` Whitebox.invokeMethod() ` 前两个参数分别为需要调用的类的实例、静态方法的名称,后面的不定长参数为调用目标方法的参数。可见,使用PowerMock测试静态方法相比于反射的方式,代码更加简洁,可读性也更好

         
               

          
                
        *** ** * ** ***

         标题:如何写private方法的单元测试 
         作者: https://51tbox.com/ 
         地址: / 

          
                
        如未加特殊说明,文章均为原创,转载必须注明出处。均采用 https://creativecommons.org/licenses/by-sa/4.0/deed.zh-Hans !
          本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。  
          • 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。  
          • 公众号转载请联系网站首页的微信号申请白名单!  

          
                
        *** ** * ** ***

          
         ![]() 

赞(0)
未经允许不得转载:工具盒子 » 如何写private方法的单元测试