• AspectJ给类的属性打桩,进行替换。


    这个东西必须写个博客记一下了,一方面是防止以后忘记,一方面也反思一下自己的固执。

    在我们的代码中,通常会有一些配置文件的路径写死在代码里面。比如

    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的变量打桩,还需要继续研究

  • 相关阅读:
    Codeforces Round #639 Div2 A~D题解
    Codeforces Round #548 Div2 A~C题解
    Codeforces Round #581 Div2 A~D题解
    Educational Codeforces Round 69 Div2 A~D题解
    Codeforces Round #572 Div2 A~E题解
    Codeforces Round #663 Div2 A~D 题解
    44. 通配符匹配 leetcode 每日一题
    174. 地下城游戏 leetcode每日一题
    将有序数组转换为二叉搜索树 2020/7/3
    Multiplication 3 AtCoder
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3327578.html
Copyright © 2020-2023  润新知