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

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

一、背景

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


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


其实还有类似的场景,比如测试环境和线上环境用了同一套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

相关文章
|
3月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
118 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
1天前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
56 35
|
3月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
1天前
|
JavaScript 前端开发 Java
使用ChatGPT生成关于登录产品代码的单元测试代码
使用ChatGPT生成关于登录产品代码的单元测试代码
32 16
|
4月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
28天前
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
57 13
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
84 1
|
4月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
93 6
基于Python访问Hive的pytest测试代码实现
|
4月前
|
Java C++
代码文件间重复性测试
本文介绍了如何使用代码相似性检测工具simian来找出代码文件中的重复行,并通过示例指令展示了如何将检测结果输出到指定的文本文件中。
|
4月前
|
测试技术 UED
软件测试的艺术:从代码到品质的探索之旅
在数字时代的浪潮中,软件已成为我们生活和工作不可或缺的一部分。然而,高质量的软件背后隐藏着一门鲜为人知的艺术——软件测试。本文将带你走进这门艺术的世界,从基础理论到实践应用,一起探索如何通过软件测试保障产品质量,提升用户体验,并最终实现从代码到品质的华丽转变。

热门文章

最新文章