Jmockit 静态方法mock

类中存在刷新、初始化等静态方法时,编写单元测试案例。
示例
被测试类:

public class MethodClass{
	public static void refresh(){
		......
		init();
	}
	public static void init(){
		......
	}
}

测试类:

public void test(){
	//模拟init静态方法,避免进入init方法体
	new Expectations(MethodClass.class){{
		MethodClass.init();
	}};
	MethodClass.refresh();
	new Verifications(){{
		MethodClass.init();
		times = 1;
	}};
}

刷新会进行初始化操作,但init并不是测试的重点,如果进入原始init的方法体,不仅会造成重复测试,而且涉及大量的属性赋值模拟和方法创建模拟(如果需要方法创建,还要采用Expectations,见附录)。对于init这种无返回值的静态方法,直接用{}包裹,调用即可。
Verifications适用于无返回值方法无法断言的情况,记录方法调用次数,完成验证。(注意,Verifications只能记录Mock的方法和属性调用)

附录:
针对方法中还会new其他方法的情况

new Expectations(AClass.class){{
		new AClass(any);
		result = new Exception();//这里是对应的返回值,异常也可以
	}};

你可能感兴趣的:(单元测试,java,junit)