zoukankan      html  css  js  c++  java
  • 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的变量打桩,还需要继续研究

  • 相关阅读:
    相当当中 ,还用到一个很重要的类 ,map地图类
    使用ObjectDataSource查询和更新
    sqlserver 简单的存储过程学习记录
    一个winform的基于TCP的服务端的GPS平台的网关。利用多线程异步的方式 。
    个人网站准备之数据处理
    记录日志(自治事务
    android调用lua
    CMarkup类读写xml文件
    MyBatis.Net 配置
    NPOI读取Excel到集合对象
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3327578.html
Copyright © 2011-2022 走看看