Java无死角测试

Mock测试

(1)引入jar包:jmockit-1.0.jar

(2)引入类:

import mockit.Mock;
import mockit.MockUp;
import mockit.Mockit;

(3)Mock方法:解决被测试代码调用的方法无法在单元测试环境下正常使用的问题。

@BeforeClass
    public static void setUpBeforeClass()
        throws Exception
    {
        new MockUp<ServletActionContext>(){
            @Mock
            HttpServletResponse getResponse()
            {
                return new MockHttpServletResponse();
            }
        };
    }
    
    @AfterClass
    public static void tearDownAfterClass()
        throws Exception
    {
        //撤销jMock
        Mockit.tearDownMocks();
    }

以上代码Mock了ServletActionContext#getResponse()方法,在单元测试运行过程中,如果代码中有调用ServletActionContext#getResponse()方法,实际上会调用Mock出来的方法。其中,ServletActionContext是方法提供类,getResponse()是需要调用的方法。

如果需要重复Mock某个方法,一定要先调用Mockit.tearDownMocks()撤销原有的Mock。


注意:如果运行jMock出现下面的错误:

java.lang.IllegalStateException: Native library for Attach API not available in this JRE  

这是由于环境配置的是JRE而不是JDK,JMock正常运行需要配置JDK,方法如下:

Eclipse-->Window-->Preferences-->Java-->Installed JREs

点击“Add”,添加JDK:


测试私有方法

如果某些方法是私有的,常规的测试无法覆盖私有方法,则采用下列方法进行测试:

Method m;
TestAction tAction = new TestAction();
m = tAction.getClass().getDeclaredMethod("testPrivateMethod");
m.setAccessible(true);
m.invoke(tAction);

以上代码测试了TestAction的私有方法testPrivateMethod()。


你可能感兴趣的:(Java无死角测试)