返回顶部

收藏

java单元测试使用jmockit mock带参数的私有方法

更多

上一个代码中演示了简单的使用jmockit mock私有方法,在实际应用中发现上面的方法对于带参数的私有方法mock不进去。

对于带参数的私有方法的mock需要使用NonStrictExpectations类,此类可以指定任意参数的方法mock。

如下是要mock的测试对象类:

package cn.outofmemory.junit.jmockit;

/**
 * 测试private method mock
 */
public class MockTarget{

    public Object privateMethod(String arg) {
        return "Hello Obkkject " + arg;
    }

    public String publicMethod() {
        return (String)this.privateMethod("abc");
    }
}

下面是mock私有方法的测试类:

package cn.outofmemory.junit.jmockit;

import mockit.NonStrictExpectations;
import mockit.Injectable;
import mockit.MockUp;
import mockit.Mocked;
import mockit.Mockit;
import mockit.NonStrict;
import mockit.Tested;

public class MockTargetTest {

    @BeforeClass
    static public void beforeClass() {
        Mockit.setUpMocks();
    }
    @Mocked
    private MockTarget mt;

    @Test
    public void testPrivateMethodMock() {       
        new NonStrictExpectations(mt) {
            {
                // 对私有方法进行mock  
                this.invoke(mt, "privateMethod", anyString);  
                result = "Hello Object";  
            }
        };

        Object actual = mt.publicMethod();
        assertEquals(actual,"Hello Object");
    }
}

标签:jMockit,mock,junit,单元测试,私有方法

收藏

1人收藏

支持

2

反对

0