junit!=单元测试

Junit是Java单元测试框架。 通常,我们将其用于单元测试,但是很多时候我们也使用它来执行集成测试。 主要区别在于,单元测试可测试单个单元,而集成测试则可测试不同类如何协同工作。 这样,集成测试可以覆盖更长的执行链。 这意味着它们可能比单元测试发现更多的错误,但同时它们通常运行更长的时间,并且如果测试失败,则更难定位错误。 如果您(作为开发人员)意识到这些差异,那么使用junit执行非单元测试就没有错。

当使用junit框架执行系统测试时,我已经在生产代码中看到了示例,其中测试的执行链包括通过网络进行的外部服务调用。 Junit只是一种工具,因此,即使您知道其缺点,也没有本质上的问题。 但是,在实际情况下,junit测试的执行是在正常的maven测试阶段执行的,并且一旦外部服务中断,代码就无法构建。 这很不好,因为清楚地表明开发人员在创建代码时并未意识到包括外部服务和构建过程在内的全局情况。

说完这些之后,让我告诉您一个不同的故事,稍后再加入这两个主题。

我们说语言...很多

大多数时候,我们的程序都有用户界面。 该界面包含文本,通常使用不同的语言。 通常以目标代码为英文和当地语言。 文本文字通常是外部化的,存储在“属性”文件中。 对于多种语言,我们为每种语言都有单独的属性文件,每种属性文件都为id定义文字文本。

例如我们有文件

messages-de.properties
messages-fr.properties
messages-en.properties
messages-pl.properties
messages.properties

在Java代码中,我们通过Spring MessageSource调用来访问它们

String label = messageSource.getMessage("my.label.name",null,"label",locale);

我们,程序员有点懒

当我们没有一些文本翻译时,问题就来了。 用不同语言指定标签实际文本的工作不属于程序员。 程序员是精通Java,C和其他编程语言的人,但是当谈到自然语言时,他们并不那么光彩。 我们大多数人不会说所有需要的语言。 有人负责翻译文本。 通常,不同的人使用不同的语言。 其中一些工作速度更快,另一些工作速度较慢,编码只是迫不及待准备好翻译。 在最终翻译可用之前,我们使用临时字符串。

所有临时解决方案都将成为最终解决方案。

临时字符串(只是英文版)进入了发行版。

流程和纪律:失败

为了避免这种情况,我们实施了一个流程。 我们为每种翻译打开了一个Jira问题。 翻译准备就绪后,它便会附在问题上。 当将其编辑到属性文件中并提交到git时,问题已关闭。 如此沉重的负担和开销使程序员为此放慢了速度,而纪律不明的程序员只是没有遵循该过程。 通常这是一个坏主意。

我们得出的结论是,不转换为属性文件并不是真正的大问题。 问题是不知道它丢失并创建发行版。 因此,我们需要一个过程在发布之前检查属性文件的正确性。

光路过程与控制

手动检查会很麻烦。 我们创建了junit测试,比较了不同的语言文件,并检查了另一个语言文件中是否没有键,并且这些值与默认的英语版本不相同。 每次发布项目时都要执行junit测试。 然后我们意识到其中一些值确实与英文版本相同,因此我们开始在语言文件的第一个位置使用字母“ X”来表示等待实际翻译值替换的标签。 在这一点上,有人建议可以将junit测试替换为简单的“ grep”。 几乎是事实,只是我们仍然希望发现丢失的键并在发布过程中自动测试运行。

总结和总结

Junit框架旨在执行单元测试,但是框架不仅可以用于其设计目的,而且可以并且将被使用。 (附带说明:对于任何工具,实际上都是正确的,无论是像锤子一样简单,还是像Java接口中的默认方法一样复杂。)

您可以使用junit执行可以在构建和/或发布的测试阶段执行的任务。

  • 任务应该快速执行,因为执行时间会增加构建/发布周期。
  • 不应依赖外部资源,尤其是通过网络可访问的外部资源,
    因为这些故障可能还会导致构建过程失败。
  • 如果某些内容对于构建不可接受,请使用junit api发出失败信号。 不要只写警告。 没有人阅读警告。

翻译自: https://www.javacodegeeks.com/2015/02/using-junit-something-else.html

使用junit做其他事情相关推荐

  1. junit5_使用junit做其他事情

    junit5 junit!=单元测试 Junit是Java单元测试框架. 通常,我们将它用于单元测试,但是很多时候我们也使用它来执行集成测试. 主要区别在于,单元测试测试单个单元,而集成测试则测试不同 ...

  2. junit junit_使用junit做其他事情

    junit junit junit!=单元测试 Junit是Java单元测试框架. 通常,我们将它用于单元测试,但是很多时候我们也使用它来执行集成测试. 主要区别在于,单元测试测试单个单元,而集成测试 ...

  3. 初级开发人员的缺点_这是我想放弃初级开发人员时所做的事情

    初级开发人员的缺点 Coding is hard. Really hard. There are times when you'll think "this is amazing! I lo ...

  4. 一个合格程序员该做的事情

    无意间浏览到这篇<程序员每天该做的事>,仔细研读.发现这些不止是程序员每天应该做的事,而是每个IT人都应注意的事情. 程序员每天应该做的事 1.总结自己一天任务的完成情况 最好的方式是写工 ...

  5. 网站seo优化每天需要做哪些事情呢?

    网站seo优化主要是通过对网站站内优化和站外优化的方式让网站符合搜索引擎的标准,有效的提高网站关键词在搜索引擎中的排名,让网站获得更多的用户和流量,这是当下互联网营销推广必备的一种方式.那么在网站优化 ...

  6. python爬虫能干什么-爬虫可以做的事情非常多,Python的爬虫你又了解多少?

    原标题:爬虫可以做的事情非常多,Python的爬虫你又了解多少? 现在爬虫可以做的事情非常多,数据.信息.电影.资料等,你技术过关了,爱咋爬咋爬,仔细观察,加上你如果认真观察,就会发现学习爬虫的人越来 ...

  7. 心得体悟帖---16、哪些看起来很难做的事情真的不过如此

    心得体悟帖---16.哪些看起来很难做的事情真的不过如此 一.总结 一句话总结: 你可能会因为激情缺乏非常抵触做什么事情,但是当你做了之后,你会发现其实感觉都还挺好的. 做着做着,你会发现感觉其实挺舒 ...

  8. 程序员每周该做的事情!

    作为一个程序员,在一周的时间里应该做哪些事情呢?下文给你一个参考! 1)向你的老板汇报一次工作  让你的老板知道你在做什么,这很重要.可以口头.书面.邮件,看你老板的工作方式而定 2)进行一次自我总结 ...

  9. 关于自动驾驶的思考以及我准备做的事情

    01 背景和思考 有差不多十来天没发表文章,不过最近被关注的也越来越少,倒也无所谓.最近一点都没闲着,一直在思考一个问题,就是自动驾驶技术对社会的影响的问题.思考的内容非常多,用PEST分析法展开去看 ...

最新文章

  1. 定制CE系统随笔-续1
  2. 2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - H. 等差数列
  3. (转)代理模式(Proxy)
  4. msp430中如何连续对位进行取反_四元数数控:如何保养视觉对位平台?
  5. 外部中断实验 编写程序学习外部中断的电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
  6. 信息安全工程师笔记-数据库安全
  7. anki卡片重复_如何在Anki中使用间隔重复来学习更快的编码
  8. object references an unsaved transient instance save the transient instance before flushing
  9. 美国女童子军正在学习电脑黑客技术!
  10. wns服务器没有响应,如何使用 Windows 推送通知服务 (WNS) 进行验证(Windows 运行时应用)...
  11. UL 2271-2018 标准轻型电动车用锂电池 最新发行中文、英文版,ANSI/CAN/ULC/UL 2271-2018
  12. Jetson Nano入门教程:硬件篇+视频学习教程
  13. Linux运维常见面试题之精华收录
  14. 智邦国际ERP系统实现手机端扫码汇报生产工序
  15. 华为前副总裁李一男正式出任百度CTO
  16. 如何清除博客中广告内容
  17. Python写入Excel格式和颜色
  18. pdf 格式文件预览
  19. Python入门学习作业之猜年龄小游戏制作
  20. 对方向导数和梯度的理解

热门文章

  1. 使用Servlet上传多张图片——实体层(ProductInfo.java)
  2. Feign数据压缩传输
  3. Web开发静态资源处理---SpringBoot
  4. stream 提取某字段_java8从list集合中取出某一属性的值的集合案例
  5. java api 开发_Java开发人员应该知道的前20个库和API
  6. java登录界面命令_Java命令行界面(第19部分):jClap
  7. junit5和junit4_JUnit 5 –基础
  8. neo4j 添加属性_Neo4j:动态添加属性/设置动态属性
  9. 斐波那契实现阶乘js_功能与命令式编程。 Java 8中的斐波那契,素数和阶乘
  10. jmeter 采样器作用_实施自定义JMeter采样器