java sapi.spvoice 更改发音人_我最喜欢的几个Java开发工具,推荐8个给你们!
在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。
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 :查看所有在这次提交中更改的文件。
- git diff –name-only SHA1 SHA2:列举出在SHA1和SHA2两次提交之间所有更改的文件。
- 在一个文件的历史提交记录中查询某个字符串:创建search.sh文件,粘贴下面代码:
5.GitHub
GitHub不仅仅为我们的Git项目提供托管服务,它为代码开源并让全世界都看到做出了巨大贡献。这鼓舞了人们去尝试、去交流、去练习,很大程度提高了每个人的项目质量和大家的技术水平。
GitHub允许我们跟进我们的issue.游客可以提交新需求和报告bug。他们也可以收到我们项目进展的通知。
6.Maven
Maven已经足够出名了。所以我不会用长篇幅解释为什么我们使用Maven做构建管理。然而我可以分享几个技巧,让你的Maven更得心应手:
管理依赖:在一个多模块的项目中,你需要在根pom.xml的标签中定义每一个依赖。一旦你这样做,所有下层模块都可以不需要指定版本。这种管理依赖的方式(比如版本升级)可以集中处理,所有下层模块都会自动识别。比如在根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通过友好的界面帮助你构建复杂的命令,你所需要做的就是填写一个表单,简直不能再棒了。
总结
使用正确的工具不仅仅帮助你节省时间提高效率,还能提高你作品的质量并享受日常工作。我们要时刻留心,发现并学习新的工具。一开始可能需要一些努力,但你总会意识到付出的时间是值得的。
最后欢迎点赞、评论、关注,持续更新中。。。。
java sapi.spvoice 更改发音人_我最喜欢的几个Java开发工具,推荐8个给你们!相关推荐
- Java集成开发工具推荐
Java集成开发工具推荐: Eclipse Eclipse是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持和其他功能到任何的默认包中,而且Eclipse市场有许多定制和扩展 ...
- java商品新增怎麽弄_添加新商品时如何初始化计数器 - java
我有如下所示的数组 public static void main(String[] args) { List asList = Arrays.asList("banner",&q ...
- java version 和javac版本不一致_解决linux下javac -version和java -version版本显示不一致...
[javascript] view plaincopy [root@localhost usr]# $JAVA_HOME/bin/java -version bash: /bin/java: 没有那个 ...
- java 三种错误类型 区别_请列举至少三种在java语言中发生“严重错误”的情况...
[简答题]自已编写一个自定义非整数异常类,来处理一个异常 [填空题]捕获异常时,可以把catch捕获的异常对象( ),使上层try-catch结构继续处理该异常事件;也可以把异常对象转换为其它异常对象 ...
- java 二维数组内存溢出_程序员:学习心得,Java内存区域,内存溢出异常
Java 内存区域 Heap 线程公有 存放实例对象 是GC主要管理区域,因此可以更细致的划分为:新生代.老年代 再细致一点划分:Eden区.From Survivor区.To Survivor区 内 ...
- 安装了java但是系统显示没安装_我的世界 已经安装了java,但还是显示没有安装,怎么办...
你安装2113的Java是否安装在c盘 你家电脑是64位的吗? 试一下 C:\Program Files (x86)\Java\jre7\bin\javaw.exe 如果不能复制这段文字 那就用记事本 ...
- java和python自学教程视频_免费视频教程,2019年最新Java、PYthon、web视频
干货视频,培训机构最新java.Python.web前端.人工智能视频(基础班+就业班).价值几万的Java.PYthon.web.人工智能视频教程, 为还在学习迷茫的你提供一个学习Java.Pyth ...
- python怎么做软件程序_看 Python 超级程序员使用什么开发工具
Python超级程序员使用的开发工具 我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发 ...
- flutter 图片路径_【Flutter开发工具推荐】Flutter资源管理利器:Flr
前言 作为一名Flutter开发者,如果你正在烦恼如何简单快捷地在pubspec.yaml中为多张图片.文本.字体资源添加声明,如果你正在烦恼如何简单安全地在代码中引用资源,那么现在你可以很简单地解决 ...
最新文章
- Linux下命令执行顺序控制与管道
- 马斯克“做空”特斯拉
- 兼容性—IE6/7下带有overflow:hidden属性的父级元素包不住带有position:relative属性的子元素...
- Docker Caffe部署
- 一个身份证号码验证接口[2]
- 采购订单中的容差项目解释
- 使用apache POI把list集合里面的实体写入Excel(java)
- block介绍(四)揭开神秘面纱(下)
- Python 并发部分的面试题
- python 加快计算速度_python怎么提高计算速度
- struts2 ajax上传文件 file空_WordPress插件漏洞分析:WPDiscuz任意文件上传漏洞
- 万字长文!搞定逃不脱的 DNS 面试题
- 线程池----ThreadPoolExecutor
- 深入理解JVM虚拟机-Ubuntu中安装openJDK
- 自学python能干些什么副业-学会Python有哪些可以做的兼职?
- Python下APScheduler的快速指南
- java类 权限修饰词_java-学习笔记-访问权限修饰词一
- 125. 如何修改PHP的memory_limit限制
- Centos 操作系统常用log日志
- Dynamics AX2012 General ledger