junit junit

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 junit

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

  1. junit junit_穿越JUnit流

    junit junit 关于JUnit 5迁移的好处之一是,您可以在老式模式下运行JUnit 4测试,并且所有内容仍然兼容. 不利的一面是,某些注释和方法在JUnit 4和JUnit 5中具有相同的名 ...

  2. junit:junit_处理JUnit中异常的另一种方法:catch-exception

    junit:junit JUnit中有许多处理异常的方法 (JUnit中有3种处理异常的方法.选择哪一种? JUnit ExpectedException规则:超越了基础 ). 在这篇文章中,我将介绍 ...

  3. junit5_使用junit做其他事情

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

  4. 使用junit做其他事情

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

  5. junit runner_了解JUnit的Runner架构

    junit runner 几周前,我开始创建一个小的JUnit Runner( Oleaster ),它允许您使用Jasmine方式在JUnit中编写单元测试. 我了解到,创建自定义JUnit Run ...

  6. JUnit 4 与 JUnit 3

    JUnit 是 Java? 语言事实上的 标准单元测试库.JUnit 4 是该库三年以来最具里程碑意义的一次发布.它的新特性主要是通过采用 Java 5 中的标记(annotation)而不是利用子类 ...

  7. java 计算器 junit测试_Java Junit测试

    使用junit做测试目的是尽量早的发现程序的bug,一个bug隐藏的时间越久,修复他的代价就越大. 1.Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回 ...

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

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

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

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

最新文章

  1. CentOS 7更新时出现Multilib version problems
  2. 四级单词pdf_2016年12月大学英语四级真题及答案解析(完整三套可打印)
  3. 音视频技术开发周刊 | 200
  4. 一分钟学会看k线图_K线图怎么看?一分钟学会看K线图
  5. 中控ecs700 mysql_浙大中控ECS700工程指导手册.pdf
  6. 服务器与客户端连接 聊天机器人
  7. 将计算机重命名出现错误,该文件已经存在的解决办法
  8. ERROR in ./src/css/1.scss 1:2
  9. 保卫Google!刻不容缓
  10. mapxtreme for java_MapXtreme For Java 4.8.2 超菜入门
  11. 安装搭配VUE使用的UI框架ElementUI
  12. 怎么开通PayPal支付?PayPal支付账号申请流程步骤
  13. 各类花里胡哨的XSS攻击举例解读(正在持续更新中~)
  14. 穆迪将收购信用数据和见解领导者Cortera
  15. Java自定义类的属性、方法结合数组简单使用
  16. mysql下载速度慢怎么办
  17. (个人笔记系列) Java基础语法
  18. Linux究竟值多少钱?
  19. 如何使用UltraISO制作U盘系统盘用于重装系统
  20. Android 动态界面开发框架 Tangram 使用完整教程

热门文章

  1. jzoj5057-[GDSOI2017模拟4.13]炮塔【网络流,最大权闭合图】
  2. 2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】
  3. 牛客练习赛 65 (待补E-网络流)
  4. Codeforces 1054D Changing Array
  5. 2016陕西省省赛 ACM Rui and her functions B 二分
  6. maven中scope属性的
  7. 影响程序员生涯的三个错误观念,你千万不要犯
  8. Eclipse中看不到jsp的页面效果
  9. 漫画:什么是SnowFlake算法
  10. 如何quot;优雅quot;地终止一个线程?