当前位置: 首页 > 科技观察

每个Java开发人员都应该知道(和喜欢)的8个工具

时间:2023-03-19 22:37:40 科技观察

在Stormpath(用户管理和身份验证服务),我们非常重视质量和效率。对于任何优秀的工匠来说,光有天赋是不够的,你还需要适合你工作的工具。工程不仅仅是一门科学,更是一门艺术。因此,在Stormpath,尽管我们才华横溢,但我们一直在寻找我们需要的有用工具。我们的工程师总是渴望与团队的其他成员分享新工具。现在,让我们向所有有才华的Java开发人员推荐该工具。在这篇文章中,我将分享我们Java团队日常使用的工具,如何使用它们,并分享一些有用的技巧。1.Groovy我们使用Groovy来编写Java测试。为什么?因为它提供了以下功能:宽松的Java语法:这是Java语法,但是一些其他规则,例如分号、变量类型和访问修饰符是可选的。后者对测试很有意义,因为访问修饰符不严格,您的测试可以读取和断言类内部的状态。例如,假设有如下类:publicclassFoo{privateStringbar=null;publicvoidsetBar(Stringbar){this.bar=bar;}}如果要测试setBar(String)方法是否正常(即bar的值可以正确修改),您可以使用Groovy轻松读取变量值。这样的操作在Java中是不允许的(只要不涉及Java的反射机制)。@Testpublicvoidtest(){deffoo=newFoo()foo.setBar("hello")Assert.isTrue(foo.bar.equals("hello"))//groovy允许我们访问私有变量bar}强大的断言:Groovy提供强大的各种断言被称为强大的断言语句。Groovy强大的断言清楚地显示了验证失败时会发生什么。另外,它比Java更具可读性。Assert.isTrue(foo.bar.equals("你好"));在Groovy中可以这样写:assertfoo.bar="hello"断言失败时会显示很清晰的描述:assertfoo.bar="goodbye"|||||false|helloFoo@12f41634Mocking:WhenusingJava,dynamicmocking框架(例如:EasyMock、PowerMock和Mockito)非常流行,这些框架可以在Groovy下方便地使用。耶!2.支持REST风格。我们的后端提供RESTAPI服务来创建和管理帐户。在众多SDK中,我们的JavaSDK提供了一种特定语言的客户端模型,用于简单的交互。其中一些SDK还提供了网页,无需编写代码即可与后端进行交互。为了使Web框架能够互操作,它们的行为必须相同。所以我们需要创建一系列基于HTTP的测试。这是我们的兼容性测试工具。该项目由我们精通一种以上语言的SDK工程师维护。所以我们需要跨语言的测试工具,谢天谢地,高枕无忧了。Rest-assured是一种用于测试REST服务的Java领域特定语言(DSLdomain-specificlanguage)。它易于使用和学习,即使对于没有使用过Java的开发人员来说,它也非常强大。它提供高级功能,例如配置详细信息、过滤器、自定义分析、跨站点请求伪造(CSRF)和OAuth2.0。它提供了一个非常简单的语法:given-when-then。例如:让我们看看它如何验证“向/login路径发送认证后信息请求返回302状态码”:given().accept(ContentType.HTML).formParam("login",account.username)。formParam("password",account.password).when().post(LoginRoute).then().statusCode(302)您可以在我们的TCKrepo3.Cargo插件中看到更多放心测试,以便让我们的JavaSDK针对TCK进行了验证,我们需要启动我们的Web服务之一,以便在其上执行测试。讲道理,我们每次构建都需要自动测试,GargoPlugin就是为此而生。Cargo只是简单地以一种标准的方式包装各种应用程序容器。我们使用Cargo在不同的Servlet容器(如Jetty和Tomcat)中毫不费力地运行我们的代码。我们只需要在我们的pom文件中配置CargoMaven2Plugin来启动一个Servlet容器(Tomcat7),在测试阶段编译最新的War包,你可以在我们的Servlet插件示例中看到配置。4.Git关于Git有什么你不知道的?要了解有关Git的更多信息,您可以查看他们的关于页面。我们的JavaSDK团队遍布全球,几乎从不坐在一起。Git保证我们编写的每一行代码,这里有一些很棒的命令可以为我们节省大量时间:gitmv--forcefoo.javaFoo.java:在区分大小写的文件系统上更改文件名很麻烦是的,这个命令使git意识到foo.java被重命名为Foo.javagitdiff-tree–no-commit-id–name-only-r:查看本次commit文件的所有变化。gitdiff--name-onlySHA1SHA2:列出在SHA1和SHA2提交之间更改的所有文件。查询某个文件的历史提交记录中的某个字符串:创建一个search.sh文件,粘贴如下代码:gitrev-list--all$2|(whilereadrevision;dogitgrep-F$1$revision$2done)命令可以用在这样执行:sh./search.shstring_to_searchfile_where_to_search5.GitHubGitHub不仅为我们的Git项目提供托管服务,它还为开源代码做出了巨大的贡献,让世界看到它。这鼓励人们尝试、交流和实践,从而大大提高了大家的项目质量和大家的技术水平。GitHub允许我们跟进我们的问题。访问者可以提交新要求并报告错误。他们还可以收到有关我们项目进度的通知。6、MavenMaven够有名了。所以我不会详细解释为什么我们使用Maven进行构建管理。但是,我可以分享一些技巧,让您的Maven更加得心应手:管理依赖项:在多模块项目中,您需要在根pom.xml的标记中定义每个依赖项。执行此操作后,所有下层模块都可以取消版本控制。这种管理依赖的方式(比如版本升级)可以集中处理,所有下层模块都会被自动识别。例如,在根pom.xml中:...下层模块的pom.xml:io.jsonwebtokenjjwt...防止低级模块编译:我们发布的时候需要把所有的低级模块一起发布,但是如何避免某个模块(例如)被释放?很简单,只要在你不想发布的模块中加入如下pom文件即可:org.apache.maven.pluginsmaven-deploy-plugin2.7true跳过集成测试:我们有许多集成测试需要很长时间才能编译。这些测试确保后端作为一个整体正常运行。在频繁的本地部署过程中,我们会因为新功能或错误修复而多次更改代码。这些测试不需要在每次本地构建时都运行,这会减慢开发速度。所以我们要确保我们的JavaSDK只在我们的CI服务器上运行时执行集成测试。您可以使用以下方法:根pom.xml文件:true...org.apache.maven.pluginsmaven-failsafe-plugin2.19.1${skipITs}**/*它。*集成测试验证所以可以想象,所有的集成测试文件都以IT结尾,保证配置的正常运行,比如:ApplicationIT.groovy或者I18nIT.groovy那么,如果我们要集成测试要运行,我们执行以下构建:mvncleaninstall-DskipITs=false7.JWTInspector我们的JavaSDK使用JWT(JSONWeb令牌)以安全可靠的方式传输数据。我们在测试排错的时候,需要分析从浏览器接收到的JWT的内容。令牌信息可能在URL、cookie或本地存储中。JWTInspector是一个浏览器插件,它允许我们从控制台或内置界面解码JSONWebTokens。您不需要在您的应用程序中跟踪令牌信息。你只需要点击插件的按钮,JWTInspector会自动显示你需要的所有信息,然后你可以复制其中的任何token信息。8.Postman严重依赖RESTAPI请求。写REST请求不方便。具体语法取决于我们使用的工具,比如curl或者HTTPie。两者都易于阅读,但语法难以记忆。通常,当我们需要排查问题时,我们需要测试一些请求。当出现问题时,我们无法判断原因是请求还是后端。我们浪费了很多时间思考我们写的请求是否正确。Postman使编写RESTAPI请求变得容易。它还提供了很多功能,比如保存、重用请求、生成代码(java、python、curl等)、批量顺序执行请求。Postman通过友好的界面帮助您构建复杂的命令,您需要做的就是填写表格,再好不过了。结论使用正确的工具不仅可以帮助您节省时间和提高效率,还可以提高您的工作质量并享受您的日常工作。我们需要保持警惕,发现和学习新工具。一开始可能需要一些努力,但您总会意识到所花的时间是值得的。