JMockit使用了AOP的方式来对被测class进行mock。被测代码需要满足以下约束,才能利用JMockit进行测试。
1、被测class需要实现一个独立的接口(以便于通过反射机制进行替换),或者至少不能声明为final(以便可以通过派生子类的方式对被测方法进行重写)。
2、Mock一个方法时,不能调用被测代码中的statick方法。编程过程中,很多静态方法会被使用,如Factory。如果需要Mock这些方法,将会很困难。
3、被测class需要提供一些办法,让测试代码有办法来mock被测class依赖的类。如为这些依赖的类提供getter/setter方法,或通过注入的方式对这些依赖的类进行实例化,而不是用new的方式创建实例