测试环境比线上的代码多了几行代码怎么处理?

简介: 测试环境比线上的代码多了几行代码怎么处理?

一、背景

今天一个朋友问了一个问题,测试环境比线上的代码多了几行代码怎么办?


是不是要新建分支?有没有更好的办法?


其实还有类似的场景,比如测试环境和线上环境用了同一套NoSQL存储,想隔离两个环境。


下面提供一个比较简单的通用的方案,希望对大家有帮助。


二、方法

我们可以写一个环境工具类,然后再特定环境的代码上用这个工具类进行判断。


public class EnvironmentHelper implements EnvironmentAware {
    private Environment environment;
    private static final String PROD = "prod";
    private static final String PRE = "pre";
    private static final String QA = "qa";
    public boolean isProd() {
        return environment.acceptsProfiles(PROD);
    }
    public boolean isPre() {
        return environment.acceptsProfiles(PRE);
    }
    public boolean isQa() {
        return environment.acceptsProfiles(QA);
    }
    public String[] getActiveProfiles() {
        return environment.getActiveProfiles();
    }
    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
}
当然也可以直接注入
@Component
public class EnvironmentHelper{
    @Autowired
    private Environment environment;
    private static final String PROD = "prod";
    private static final String PRE = "pre";
    private static final String QA = "qa";
    public boolean isProd() {
        return environment.acceptsProfiles(PROD)
    }
    public boolean isPre() {
        return environment.acceptsProfiles(PRE);
    }
    public boolean isQa() {
        return environment.acceptsProfiles(QA);
    }
    public String[] getActiveProfiles() {
        return environment.getActiveProfiles();
    }
}
然后借助工具类来判断环境
@Service
public class DemoServiceImpl implements DemoService {
    @Resource
    private EnvironmentHelper environmentHelper;
    @Override
    public void test() {

      // 其他代码1

       if (environmentHelper.isQa()) {

           // 测试环境专用代码

       }

       // 其他代码2

   }

}

当然了也可以借助Apollo来配置,比如设置一个变量表示是否开启某个功能,线上的Apollo和测试服的配置不同。



如果预发和线上服公用同一套缓存框架,通过环境工具类获取环境的名称和key组合成一个新的key字符串,即可实现环境的隔离。


三、总结

方法不难,在开发中偶尔也会用到。


另外建议大家多看Spring的官方文档,很多场景都有专门的类提供了相关的功能,而不是遇到一个问题一个问题去查,去问。



创作不易,如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

————————————————

版权声明:本文为CSDN博主「明明如月学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/w605283073/article/details/93534329

相关文章
|
1月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
28 1
|
2月前
|
测试技术
包含用例执行时间的测试报告代码
包含用例执行时间的测试报告代码
|
4月前
com串口通信测试代码
com串口通信测试代码
28 0
|
4月前
|
存储 人工智能 C#
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
36 0
|
4月前
|
监控 前端开发 JavaScript
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
74 0
|
18天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出"验证成功",否则输出"验证失败"。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
4月前
|
监控 前端开发 JavaScript
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
如何测试前端代码? 知道 BDD, TDD, Unit Test 么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
40 0
|
1月前
|
测试技术 数据库 Python
python测试代码(二)
python测试代码(二)
19 0
|
1月前
|
Java 测试技术
单元测试编写可测试代码
单元测试编写可测试代码
19 2
|
2月前
|
存储 测试技术
统计测试结果的代码实现接昨天
统计测试结果的代码实现接昨天

热门文章

最新文章