@JFinal,@杜福忠
我的项目一次开始写测试用例。我在测试用例里写Aop.get运行报错。因为要测试的service类里有使用@Inject注入的其他对象,如果直接new,service里的@Inject就不生效了,会是null。
是我没写对,还是Aop.get在JUnit里不能用呢?希望得到指导!
1、使用JF默认代理(JDK环境有 tools.jar 类动态编译才可用)
【根据描述 只在test工程里面失效,那么这个场景就可以排除了】
2、确定使用的JRE环境,在项目中configConstant(Constants me) 有配置 me.setToCglibProxyFactory(); 或者 me.setToJavassistProxyFactory(),第三方代理工具。
https://jfinal.com/doc/2-2
那么在测试类中 (一般是base测试类)。
JUnit 5:@BeforeAll 注解的方法里面 配置:
JUnit 4:@BeforeClass 注解的方法里面 配置:
可单独写:
ProxyManager.me().setProxyFactory(new CglibProxyFactory());
或 ProxyManager.me().setProxyFactory(new JavassistProxyFactory());
也可整体加载JF配置项(推荐):(因为还有一些数据库插件等一系列的配置,都单写太麻烦,而且后期项目JF配置有增加时,测试类忘记写,测的就不准了)。
就是直接创建 JFinalFilter然后进行自建类的init调用(或用undertow的实现类),执行同项目的jfinalConfig子类,这样配置完全和正式项目一致,不出幺蛾子。