日期:2014-05-16 浏览次数:21045 次
这个东西必须写个博客记一下了,一方面是防止以后忘记,一方面也反思一下自己的固执。
在我们的代码中,通常会有一些配置文件的路径写死在代码里面。比如
public class ConfigPath
{
private static String CONF_FILE = "/dir/xxx/ppp.propetries";
}
在做UT的时候,一般测试环境和真实的生产环境是不一样的,配置文件的路径肯定也是不一样的,这样在测试的时候,必须要把这个路径替换掉,而且不能影响系统原来的代码。
在上一家公司的时候,做过这样的事情,不过在那个公司都是前面的大牛写过这样的东西,自己依葫芦画瓢,照着写一份就好了。
记得当时是在aj文件中,fild = "xxxxx"; 这样的形式来替换的,但是前面的AspectJ关键字记不住了(其实不是这样的,自己记错了,源文件中才是这种形式,aj中还是用的pointcut)。自己固执的认为就是这个形式的,在网上查了很多Aj的资料,都没找到这种形式打桩的(其实现在网上Aj的资料也不多)。
在此还是要感谢一下表哥和劢神,最后还是他们给我说的怎么弄。
要想替换掉上面那个ConfigPath类中的 CONF_FILE 属性的值, 应该在AJ文件中这样写一个切面:
pointcut setConfFile(String fileName): set(private static String ConfigPath.CONF_FILE)&&args(fileName); // set()里面的private static修饰符也可以不要
around(String fileName):setConfFile(fileName)
{
proceed("这里是UT里面的希望替换的新内容");
}
这种方法貌似还是不能给final的变量打桩,还需要继续研究