阅读更多

2顶
0踩

Web前端
在Stormpath(一款用户管理和认证服务),我们认真对待质量和效率。任何一个优秀的工匠,仅仅拥有天赋是不够的,你在工作中还需要正确的工具。工程学不仅仅是科学,更是艺术。所以,在Stormpath,尽管我们拥有天赋,我们仍不断寻找所需的有用的工具。我们的工程师一直渴望向团队其他人分享新工具。现在,让我们向所有充满天赋的Java开发者推荐工具。

在这篇文章中,我将分享我们Java团队日常工作使用的工具,并介绍如何使用它们,分享一些实用的小技巧。


1.Groovy
我们使用Groovy来写Java测试。为什么?因为它提供了下面这些能力:

宽松的Java语法:这是Java语法,但有些其他规则,比如分号,变量类型,访问修饰符都是可选的。后者对于测试意义重大,由于访问修饰符不是严格的,你的测试可以读取并断言类内部的状态。举个例子,我们假设下面一个类:


如果你想测试setBar(String)方法正常(即能正确修改bar的值),你可以用Groovy方便的读取变量值。Java中不允许这样的操作(在不涉及Java反射机制前提下)。

强大的断言:Groovy提供强大多样的assert,被称作power assertion statement。Groovy的强大断言能够清晰的展示验证失败时的结果。另外,它比Java更有可读性。

可以用Groovy这样写:

当断言失败时它会显示一个非常清晰的描述:

Mocking:使用Java时,动态模拟框架(如:EasyMock,PowerMock和Mockito)非常流行,这些框架可以在Groovy下方便的使用。耶!

2.支持REST风格
我们的后端提供REST API服务来创建和管理账户,众多SDK中,我们的Java SDK提供特定语言客户端模型做简单交互。其中一些SDK也提供网页来和后端交互,从而不用编写代码。

为了保证网络框架的互操作性,它们必须表现的一样。因此我们需要创建一系列基于HTTP的测试。这是我们的兼容性测试工具。这个项目由我们的SDK工程师维护,他们精通不止一种语言。因此我们需要跨语言测试工具,谢天谢地Rest-assured来了。

Rest-assured是Java领域特定语言(DSL domain-specific language)用来测试REST服务,它简单易用易上手,甚至对于没有用过Java的开发者也是难以置信的强大。它提供先进的特性,比如细节配置、过滤器、定制分析、跨站请求伪造(CSRF)和OAuth 2.0。它提供非常简单的语法:given-when-then。

举个例子:让我们来看它如何校验“向/login路径发送post认证信息请求返回302状态码”:

你可以在我们的TCK repo中看到更多Rest-assured测试

3.Cargo Plugin
为了让我们的Java SDK按照TCK校验,我们需要开启我们其中一个Web服务,以便测试在上面执行。讲道理的话,我们需要每次构建时自动测试,Gargo Plugin就是为此而生。

Cargo用标准的方式简单封装各种应用容器。我们使用Cargo可以毫不费力的在不同的Servlet容器(比如Jetty和Tomcat)中运行我们的代码。我们只需要在我们的pom文件中配置Cargo Maven2 Plugin来启动一个Servlet容器(Tomcat7),在测试阶段编译最近的War包,你可以在我们的Servlet插件例子中看到配置。

4.Git
我们能讨论哪些关于Git你不了解的事情呢?想要深入了解Git,你可以看他们的About页。

我们的Java SDK团队遍布全球,而且彼此之间几乎从未坐在一起。Git保障了我们写的每一行代码,这里有一些非常棒的命令,节省了我们大量的时间:

  • git mv –force foo.java Foo.java:在大小写敏感的文件系统中改变文件名是非常麻烦的,这个命令能让git意识到foo.java重命名为Foo.java
  • git diff-tree –no-commit-id –name-only -r <commit_ID>:查看所有在<commit_ID>这次提交中更改的文件。
  • git diff –name-only SHA1 SHA2:列举出在SHA1和SHA2两次提交之间所有更改的文件。
  • 在一个文件的历史提交记录中查询某个字符串:创建search.sh文件,粘贴下面代码:


命令可以通过这种方式执行:sh ./search.sh string_to_search file_where_to_search

5.GitHub
GitHub不仅仅为我们的Git项目提供托管服务,它为代码开源并让全世界都看到做出了巨大贡献。这鼓舞了人们去尝试、去交流、去练习,很大程度提高了每个人的项目质量和大家的技术水平。

GitHub允许我们跟进我们的issue.游客可以提交新需求和报告bug。他们也可以收到我们项目进展的通知。

6.Maven
Maven已经足够出名了。所以我不会用长篇幅解释为什么我们使用Maven做构建管理。然而我可以分享几个技巧,让你的Maven更得心应手:

管理依赖:在一个多模块的项目中,你需要在根pom.xml的<dependencyManagement>标签中定义每一个依赖。一旦你这样做,所有下层模块都可以不需要指定版本。这种管理依赖的方式(比如版本升级)可以集中处理,所有下层模块都会自动识别。比如在根pom.xml:

下层模块的pom.xml:

阻止下层模块编译:在发布的时候我们需要所有下层模块一起发布,但是我们如何避免某个模块(比如example)发布呢?很简单,只需要把下面的pom文件加入到你不想发布的模块:

跳过集成测试:我们有很多集成测试需要很长时间编译。这些测试确保了后端整体运行正常.在频繁的本地部署期间,我们多次因为新功能或修复bug而更改代码。并不需要每次在本地构建的时候执行这些测试,这会拖慢开发进度。因此我们要确保我们的Java SDK只在我们的CI服务器上运行的时候执行集成测试。可以通过下面方法:

根pom.xml文件:

所以你可以想象到,所有集成测试文件以IT结尾,来保证配置正常运作,比如:ApplicationIT.groovy 或 I18nIT.groovy

然后,如果我们想让集成测试运行,我们执行以下构建:mvn clean install -DskipITs=false

7.JWT Inspector
我们的Java SDK使用JWT(JSON Web Token)通过安全可靠的方式传输数据。当我们测试排查时,我们需要分析从浏览器接收到的JWT内容。token信息可能在URL,cookie或本地储存中。JWT Inspector是一款浏览器插件,让我们可以从控制台或内置的界面解码JSON Web Token。你不需要在你的app中跟踪token信息。你只需要按一下插件的按钮,JWT Inspector会自动展示你所需要的所有信息,然后你可以复制其中任何token信息。

8.Postman
我们重度依赖REST API请求,编写REST请求并不方便,具体语法取决于我们所用的工具,比如curl或HTTPie。两者都易读,但语法难记。通常,我们需要排查问题时,我们需要测试一些请求。当出问题时,我们无法判断原因是请求还是后端。我们浪费了大量时间来怀疑我们写的请求是否正确。

Postman让书写REST API请求变得简单。它也提供很多功能,比如保存、复用请求、生成代码(java,python,curl等等),还可以批量按序执行请求。Postman通过友好的界面帮助你构建复杂的命令,你所需要做的就是填写一个表单,简直不能再棒了。

总结
使用正确的工具不仅仅帮助你节省时间提高效率,还能提高你作品的质量并享受日常工作。我们要时刻留心,发现并学习新的工具。一开始可能需要一些努力,但你总会意识到付出的时间是值得的。

原文链接:dzone.com 翻译:码农网
译文链接:codeceo.com


  • 大小: 122.1 KB
  • 大小: 7.6 KB
  • 大小: 4.8 KB
  • 大小: 1.8 KB
  • 大小: 1.6 KB
  • 大小: 3.3 KB
  • 大小: 5.3 KB
  • 大小: 3.7 KB
  • 大小: 9.6 KB
  • 大小: 7.8 KB
  • 大小: 9.9 KB
  • 大小: 22.7 KB
2
0
评论 共 1 条 请登录后发表评论
1 楼 全栈开发 2017-12-26 10:30
java项目教学资料,项目配源码教学视频,免费资料可全套领取:http://m.javaee.hqyj.com/shipin/?lbjeye

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 浅析统计学与数据挖掘

    浅析统计学与数据挖掘,数据挖掘和统计学应该相互学习和渗透,各自分工,协同工作,共同为挖掘隐 藏在复杂现象背后的有价值的知识贡献力量。

  • 2021-01-14基于统计学的方法

    异常检测 Task2:基于统计学的方法 根据如何指定和学习模型,异常检测的统计学方法可以划分为两个主要类型:参数方法和非参数方法。

  • 数据挖掘( Data Mining )和统计学:有什么联系?

    数据挖掘( Data Mining )和统计学:有什么联系? J.H.Friedman  斯坦佛大学统计系及线性加速中心 摘要:DM(数据挖掘)是揭示存在于数据里的模式及数据间的关系的学科,它强调对大量观测到的数据库的处理。它是涉及数据库管理,人工智能,机器学习,模式识别,及数据可视化等学科的边缘学科。用统计的观点看,它可以看成是通过计算机对大量的复杂数据集的自动探索性分析。目前对该学科的作用尽管

  • 统计学、人工智能、机器学习、数据挖掘的区别与联系之(1) 概念

    自认为从事机器学习已经有些时日了,常常听到统计学、人工智能、机器学习、数据挖掘、机器视觉吧啦吧啦....自己也曾迷茫,自己究竟算哪个方向的呢?因此起意整理一套系列文章将这些概念描述清楚,旨在理清这些错综复杂的概念,促使我们正对性学习我们关注的方向,我想这对我们搞算法也是相当必要的。统计学 统计学(英语:Statistics)是在资料分析的基础上,自17世纪中叶产生比逐步发展起来的一门学科,它是研

  • 统计学,机器学习,数据挖掘和深度学习之间的区别于联系

    概念 机器学习:专门研究计算机怎么模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 统计学:通过搜索、整理、分析、描述数据等手段,以达到推断所测对象的本质,甚至预测对象未来的一门综合性科学。 它是人工智能的核心,是使计算机具有智能的根本途径。 数据挖掘:指从...

  • 统计学、机器学习、数据挖掘、深度学习的关系

    统计学定义: 统计学是关于认识客观现象总体数量特征和数量关系的科学。它是通过搜集、整理、分析统计资料,认识客观现象数量规律性的方法论科学。 机器学习定义: 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 数据挖掘定义: 数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程。通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学

  • 浅析统计学、数据挖掘、机器学习和AI的区别和关系

    随着互联网的快速发展,互联网产品的接入用户量级和接入场景范围不断扩大,加之越来越复杂的业务逻辑,不可避免地产生大规模的数据。因此,使得近年来数据科学领域相关概念的热度不断攀升,大数据、数据挖掘、机器学习、AI、NLP、图像识别、模式识别等概念一拥进入大众视野,但这些概念的模糊定义给想要进入数据科学领域的学习者带来了很大的难度,为了对数据科学领域有更系统的认知,我想对其中的各个模块做一个关系梳理,以

  • 统计学和数据挖掘区别

    统计学和数据挖掘区别 来源: CIOZJ   作者:  日期:2013-12-12  类别:大数据  主题:  编辑:dezai 在服务器上平淡无奇的陈年旧数一夜之间身价倍增。按照世界经济论坛报告的看法,“大数据为新财富,价值堪比石油”.大数据之父维克托则乐观预测,数据列入企业资产负债表只是时间问题。 在服务器上平淡无奇的陈年旧数一夜之间身价倍增。按照世界

  • 聊一聊统计学与数据挖掘的区别(一)

    当大家看到这个题目的时候,想必大家都有些疑惑——统计学和数据挖掘看起来并不容易混淆的东西,有必要去区分统计学和数据挖掘吗?答案是肯定的,这是因为统计学和数据挖掘有共同的目标,就是发现数据中的结构,下面我们就给大家讲述一下统计学与数据挖掘的区别。 我们说过了,统计学和数据挖掘有着共同的目标就是发现数据中的结构。事实上,由于它们的目标相似,一些人认为数据挖掘是统计学的分支...

  • 数据分析与数据挖掘的区别和联系?

    数据分析与数据挖掘的界定非常的模糊。但有一点可以确定,数据分析输出的是统计结果,比如总计,平均值等,数据挖掘输出的是模型或规则,我们一起来看下之间区别: 二者有以下几点区别 1.对计算机编程能力的要求不同       一个对编程、敲代码一窍不通的人完全可以成为一名优秀的数据分析师。数据分析很多时候用到的都是诸如Excel、SPSS、SAS等成型的分析工具,这些工具已经可以满足大多数数据分析的

  • 聊一聊统计学和数据挖掘的区别(四)

    前几篇文章中我们都是从统计学的角度给大家讲解数据挖掘和统计学的区别所在,但是对于统计学来说,数据挖掘中的核心就是准则,数据挖掘意味着数据集的规模,它常常标示着传统的准则不可用,我们在这篇文章中给大家详细地介绍一下这些内容。 相对于统计学而言,数据挖掘中准则起着更为核心的作用,数据挖掘所继承的学科如计算机科学及相关学科也是如此。数据集的规模常常意味着传统的统计学准则不适...

  • 数据分析与挖掘的联系和区别!

    作者:匿名用户链接:https://www.zhihu.com/question/20127962/answer/37363309来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。转自:数据分析与挖掘的联系和区别! 数据分析只是在已定的假设,先验约束上处理原有计算方法,统计方法,将数据分析转化为信息,而这些信息需要进一步的获得认知,转化为有效的预测和决策,这时...

  • Thinking in BigData(五)大数据之统计学与数据挖掘

    原文章来自于《Statistics and Data Mining: Intersecting Disciplines》作者:David J. Hand文章中指出统计学与数据挖掘的区别。开始认识它们,开始了解大数据处理的最基本的技术概念吧。 说明:前段时间这篇文章,对于数据挖掘工作者来所,很有价值的一篇文章,但是翻译的很拗口。希望通过自己的语言总结一下,可以把一些概念理清。如有错误, 后会继续完善。 今天回来,在原来的文章中,添加了一些数据挖掘方面的概念。

  • 数据分析与数据挖掘的关系

    先说区别:1、计算机编程能力数据分析: 一个完全不懂编程,不会敲代码的人完全可以是一名能好的数据分析师,因为一般情况下OFFICE包含的几个工具已经可以满足大多数数据分析的要求了。很多的数据分析人员做的工作都是从原始数据到各种拆分汇总,再经过分析,最后形成完整的分析报告。当然原始数据可以是别人提供,也可以自己提取(作为一名合格的数据分析师,懂点SQL知识是很有好处的)。数据挖掘:需要有编程基础(P...

  • 聊一聊统计学和数据挖掘的区别(三)

    在前面的文章中我们给大家讲述了数据挖掘的一个特定属性就是要处理的是一个大数据集,这跟统计学不同,使得两者在建立模型中都可能存在差别,所以我们还是要了解这些内容的,但是数据挖掘和统计学的区别还有哪些呢?下面就有我们为大家解答一下这个问题。 数据挖掘中的一个特定的属性就是处理一个大数据集,这就意味着,建立的统计模型可能会利用一系列概率表述,但当总体数据可以获得的话,在数据...

  • 统计学,数据挖掘,深度学习和机器学习的定义和关系

    定义: 统计学: 统计学是通过搜索、整理、分析、描述数据等手段,以达到推断所测对象的本质,甚至预测对象未来的一门综合性科学。 数据挖掘: 数据挖掘是指从大量的数据中通过算法搜索隐藏于其中信息的过程。也可以叫数据深层采集,数据勘探,利用各种技术与统计方法,将大量的历史数据,进行整理分析,归纳与整合。 深度学习: 深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声

  • 数据挖掘与统计分析的区别

    多元统计老师说:“数据挖掘是以统计分析为基础的,多数在采用统计分析的方法”。我有不同的观点,就写点东西出来,大家可以自己评述。 我们过去曾给予数据挖掘方法智能的生命力,把它看作商务智能重要的发展方向。但统计学作为一个学科是否应该关心它的发展。我们是否应该将它看...

  • 数据挖掘与机器学习关系与区别

    数据挖掘与机器学习关系与区别 ps:本篇文章主要阐述最近在数据挖掘、机器学习等方面的学习心得,或许不太全面,仅供自己归纳总结。 主要参照 周志华老师的:机器学习与数据挖掘 一文。有兴趣的可以自行百度,其文对人工智能、数据挖掘、机器学习等演变历程,有详细介绍。 一、概念定义 机器学习:广泛的定义为 “利用经验来改善计算机系统的自身性能。”,事实上,由于“经验”在计算机系统中主要是以数据的形式

  • 统计学与数据挖掘

       统计学和数据挖掘有着共同的目标:发现数据中的结构。事实上,由于它们的目标相似,一些人(尤其是统计学家)认为数据挖掘是统计学的分支。这是一个不切合实际的看法。因为数据挖掘还应用了其它领域的思想、工具和方法,尤其是计算机学科,例如数据库技术和机器学习,而且它所关注的某些领域和统计学家所关注的有很大不同。   1.统计学的性质    试图为统计学下一个太宽泛的定义是没有

  • 终于有人把数据、信息、算法、统计、概率和数据挖掘都讲明白了!

    导读:数据与数据应用中的许多概念彼此有着千丝万缕的联系,同时也有着概念上的偏重与区别,那我们可以先从数据应用领域中的常见概念先聊起。作者:高扬、卫峥、尹会生插画设计:万娟...

Global site tag (gtag.js) - Google Analytics