1.Java IDE集成开发工具: IntelliJ IDEA CE 2019
2.Apache AntåApache Mavençåºå«
3.单元测试实践
4.Javaç常ç¨å¼åå·¥å
·ï¼
Java IDE集成开发工具: IntelliJ IDEA CE 2019
IntelliJ IDEA CE 是源码一款功能强大的 Java 集成开发环境。它将源代码编入索引后,源码提供即时、源码智能的源码代码完成,以及快速的源码代码分析,确保编码效率与代码质量。源码棋牌源码怎么架设IDE 强大的源码重构工具为开发者带来便捷的代码维护体验。
IntelliJ IDEA CE 内置了丰富且统一的源码版本控制系统界面,支持 Git、源码SVN、源码Mercurial、源码CVS、源码Perforce 和 TFS 等主流版本控制系统,源码帮助开发者高效管理代码版本。源码
构建工具方面,源码IDE 支持 Maven、Gradle、Ant、Gant、SBT、网盘系统源码NPM、Webpack、Grunt、Gulp 等多种构建工具。这些工具与 IDE 的无缝集成,使得自动编译、打包、运行测试、部署等操作变得更加简单高效。
在测试方面,IntelliJ IDEA CE 提供了强大的单元测试支持,包括 JUnit、TestNG、Spock、Cucumber、ScalaTest、spec2 和 Karma 等主流测试框架的测试运行器和覆盖工具。开发者可以轻松执行单元测试,提升代码质量。csgo源码
IDE 还内置了反编译器,无需借助第三方插件,即可查看没有源代码的库。内置终端功能,让开发者无需离开 IDE 即可执行命令,进行代码调试。
数据库工具方面,IntelliJ IDEA 提供了智能编码辅助功能,支持 SQL 编辑、实时数据库连接、查询执行、数据浏览和导出,以及可视化方案管理。
应用服务器支持方面,IDE 支持 Tomcat、JBoss、WebSphere、WebLogic、Glassfish 等主流应用服务器。VScode 源码开发者可以轻松部署工件到应用服务器,并在 IDE 中直接调试已部署的应用程序。
通过 Docker 工具窗口,开发者可以连接到本地运行的 Docker 机器,管理图像、容器和 Docker Compose 服务。多语言支持是 IntelliJ IDEA 的一大亮点,它不仅支持 Java,还支持 Groovy、Kotlin、Scala、JavaScript、TypeScript 和 SQL 等其他语言。IDE 提供了顶级框架的一流支持,包括 Spring、Java EE、Grails、Play、Android、电玩城源码GWT、Vaadin、Thymeleaf、React、AngularJS 等,帮助开发者高效完成多语言项目的开发。
IntelliJ IDEA 以其强大的功能、丰富的插件生态系统和多语言支持,成为一款功能全面、易于使用的集成开发环境,适合各类开发者在 Java 和多语言项目开发中使用。
Apache AntåApache Mavençåºå«
Apache Ant
1ãAnt æ¯ç¨åºåçï¼ä½ å¿ é¡»æç¡®çåè¯ Ant åä»ä¹ï¼ä»ä¹æ¶ååãä½ å¿ é¡»åè¯å®å»ç¼è¯ï¼ç¶åå¤å¶ï¼ç¶åå缩ã
2ãAnt 没æçå½å¨æï¼ä½ å¿ é¡»å®ä¹ç®æ åç®æ ä¹é´çä¾èµãä½ å¿ é¡»æ工为æ¯ä¸ªç®æ éä¸ä¸ä¸ªä»»å¡åºåã
Apache Maven
1ãMaven æ¥æ约å®ï¼å ä¸ºä½ éµå¾ªäºçº¦å®ï¼å®å·²ç»ç¥éä½ çæºä»£ç å¨åªéãå®æåèç æ¾å° target/classesï¼ç¶åå¨ targetçæä¸ä¸ª JAR æ件ã
2ãMaven æ¯å£°æå¼çãä½ éè¦åçåªæ¯å建ä¸ä¸ª pom.xml æ件ç¶åå°æºä»£ç æ¾å°é»è®¤çç®å½ãMaven ä¼å¸®ä½ å¤çå ¶å®çäºæ ã
3ãMaven æä¸ä¸ªçå½å¨æï¼å½ä½ è¿è¡ mvn installçæ¶å被è°ç¨ãè¿æ¡å½ä»¤åè¯ Maven æ§è¡ä¸ç³»åçæåºçæ¥éª¤ï¼ç´å°å°è¾¾ä½ æå®ççå½å¨æãéåçå½å¨ææ éä¸çä¸ä¸ªå½±åå°±æ¯ï¼Maven è¿è¡äºè®¸å¤é»è®¤çæ件ç®æ ï¼è¿äºç®æ å®æäºåç¼è¯åå建ä¸ä¸ª JAR æ件è¿æ ·çå·¥ä½ã
Maven 以æ件çå½¢å¼ä¸ºä¸äºä¸è¬ç项ç®ä»»å¡æä¾äºå ç½®çæºè½ãå¦æä½ æ³è¦ç¼åè¿è¡åå æµè¯ï¼ä½ éè¦åçåªæ¯ç¼åæµè¯ç¶åæ¾å°/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/test/javaï¼æ·»å ä¸ä¸ªå¯¹äº TestNG æè JUnit çæµè¯èå´ä¾èµï¼ç¶åè¿è¡ mvn testã
å¦æä½ æ³è¦é¨ç½²ä¸ä¸ªweb åºç¨èé JAR ï¼ä½ éè¦åçæ¯æ¹åä½ ç项ç®ç±»å为 war ï¼ç¶åæä½ ææ¡£æ ¹ç®å½ç½®ä¸º /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/main/webappãå½ç¶ï¼ä½ å¯ä»¥ç¨ Ant åè¿äºäºæ ï¼ä½æ¯ä½ å°éè¦ä»é¶å¼å§åè¿äºæ令ãä½¿ç¨ Ant ï¼ä½ é¦å éè¦ç¡®å® JUnit JAR æ件åºè¯¥æ¾å¨åªéï¼ç¶åä½ éè¦å建ä¸ä¸ªå å«è¿ä¸ª JUnit JAR æ件ç classpath ï¼ç¶ååè¯ Ant å®åºè¯¥ä»åªéå»æ¾æµè¯æºä»£ç ï¼ç¼åä¸ä¸ªç®æ æ¥ç¼è¯æµè¯æºä»£ç 为åèç ï¼ä½¿ç¨ JUnit æ¥æ§è¡åå æµè¯ã没æè¯¸å¦ antlibs å lvy çææ¯çæ¯æï¼å³ä½¿æäºè¿äºæ¯æææ¯ï¼ï¼Ant ç»äººæè§æ¯èªå®ä¹çç¨åºåæ建ã
项ç®ä¸ä¸ç»é«æçåæ约å®ç Maven POM ï¼ç¸å¯¹äº Ant çé ç½®æ件ï¼åªæå¾å°ç XML ã
Maven çå¦ä¸ä¸ªä¼ç¹æ¯å®ä¾é 广æ³å ¬ç¨ç Maven æ件ãææäººä½¿ç¨ Maven Surefire æ件æ¥è¿è¡åå æµè¯ï¼å¦ææ人添å äºä¸äºé对æ°çæµè¯æ¡æ¶çæ¯æï¼ä½ å¯ä»¥ä» ä» éè¿å¨ä½ 项ç®ç POM ä¸å级æ个ç¹å®æ件ççæ¬æ¥è·å¾æ°çåè½ã
ä½¿ç¨ Maven è¿æ¯ Ant çå³å®ä¸æ¯éæ¤å³å½¼çï¼Ant å¨å¤æçæ建ä¸è¿æå®çä½ç½®ãå¦æä½ ç®åçæ建å å«ä¸äºé«åº¦èªå®ä¹çè¿ç¨ï¼æè ä½ å·²ç»åäºä¸äº Ant èæ¬éè¿ä¸ç§æç¡®çæ¹æ³å®æä¸ä¸ªæç¡®çè¿ç¨ï¼èè¿ç§è¿ç¨ä¸éå Maven æ åï¼ä½ ä»ç¶å¯ä»¥å¨Maven ä¸ç¨è¿äºèæ¬ãä½ä¸ºä¸ä¸ª Maven çæ ¸å¿æä»¶ï¼ Ant è¿æ¯å¯ç¨çãèªå®ä¹çæ件å¯ä»¥ç¨ Ant æ¥å®ç°ï¼Maven 项ç®å¯ä»¥é ç½®æå¨çå½å¨æä¸è¿è¡ Ant çèæ¬ã
单元测试实践
非常有意思的一段话:
我们用得最多的基本单元测试框架是junit和testng,下面对这两个工具做个对比。
通过上面的对比可以看出,TestNG作为Java项目的单元测试框架是更有优势的,TestNG在参数化测试、依赖测试、套件测试、分组测试、并发测试等方面都比Junit4强,同时,TestNG涵盖了JUnit4的全部功能。
所以下面的案例说明都是基于TestNG来写的。
为方便对后面内容的理解,先写一个单元测试:
这是一个验证rsa加解密功能的单元测试。
TestMain是抽象出来,用于启动spring容器以及支持testng用例自动注入bean,因为启动spring容器总是很耗时的,如果我们的测试用例用不到依赖的spring bean,最好不雅启动spring容器,TestMain源码:
这就是TestMain最好放在和工程Application类所在包相同路径下的原因,比如我的示例中TestMain和BoardServerApplication都在相同包路径下:com.allawn.athletic.board.server。
检查TestNG插件是否存在
插件搜索“Coverage”
在我们的pom文件下加如下plugin配置:
idea插件自带,带搜索插件“PIT mutation testing”,但不建议用,很难调通!
本地开发环境
IDE自动创建单元测试的方法(也可手动完成):
创建后的单元测试在Maven工程的test目录下生成测试类:
注意:如果之前没有test目录,则需要手动创建一下:
然后再把目录设置为test目录。设置方法:file -> Project Structure -> Modules
运行单元测试
创建单元测试
Maven执行的相关命令:
如果单元测试不通过,出现如下:
两种方式皆可运行。
运行不通过则则会有提示
要通过maven运行单元测试,要保证pom配置没有跳过单元测试,检查设置如下:
IDEA可以直接生成覆盖率报告,导出来的覆盖率报告长这样:
点击index.html即可看报告内容:
变异测试,英文Mutation Testing,是使用变异器 (切换数学运算符,更改返回类型,删除调用等)将代码修改为不同的变异(基于变异器创建新代码),并检查单元测试是否失败。好的单元测试应该使所有突变都失败(杀死)。
主要列出testng的测试方法,junit的测试方法请另行百度。
异常测试是指在单元测试中应该要抛出什么异常是合理的,可以检测我们方法中指定跑出的异常,类似这种:
如果我们有时候不想测试某些方法的单元测试,那么我们可以指定这些具体的单元测试跳过不执行,testng和junit4都支持忽略测试,testng通过@Test(enabled=false)跳过。
指定某个单元测试方法最长执行时间,如果超时了就算失败,testng中的timeout单位是毫秒。
套件测试是指把多个单元测试组合成一个模块,然后一起运行,在套件定义中还可以通过定义组,针对相同组名的单元测试统一运行。
为方便我们模拟单元测试的传参,testng提供了@DataProvider注解,我们可以在单元测试内设置多种参数值,单元测试会依次把入参都跑一遍。被@DataProvider修饰的方法,返回值是数组形式。
依赖测试是指测试的方法是有依赖的,在执行的测试之前需要执行的另一测试。如果依赖的测试出现错误,所有的子测试都被忽略,且不会被标记为失败。
TestNG支持通过多个线程并发调用一个测试接口来实现性能测试,invocationCount表示方法调用的次数,threadPoolSize表示并发线程数量,timeOut即是每次调用最大耗时时间。
通过多线程并行调用多个测试方法,在我们套件/组测试的时候,如果使用并行测试,可以大大减少测试运行时间。
Mock的使用场景:
Mockito有比较简洁的API,简单易学,可读性强。从Mockito2开始,Mockito支持了很多新特性以及新注解(所以依赖mockito2.x以上版本的需要java8及以上jdk方可),使用很便捷,spring-boot-starter-test包默认内置mockito,鉴于维护性和语言新特性的支持,个人建议使用Mockito作为单元测试的mock工具。
在有需要的地方进行mock,否则走真实方法调用。
除了采用静态方法spy以外,还可以通过采用注解的方式:
结果示例:
除了@Spy注解需要如此设置,@Mock、@Captor、@InjectMocks等注解也需要。
对整个class进行mock
结果:
Junit5使用手册: junit.org/junit5/docs/c...
在Junit5中要使用Mockito,需要单独引入mockito-junit-jupiter依赖包,通过在单元测试类上加
@ExtendWith(MockitoExtension.class)
实现构建一个mock运行容器。
在有需要的地方进行mock,否则走真实方法调用。
除了采用静态方法spy以外,还可以通过采用注解的方式:
结果示例:
结果:
Javaç常ç¨å¼åå·¥å ·ï¼
java常ç¨çå¼åå·¥å ·ãé½è¯´å·¥æ¬²åå ¶äºå¿ å å©å ¶å¨ï¼è¦æ³å¦å¥½javaè¿é¨è¯è¨ï¼éæ©ä¸æ¬¾å¥½ç¨é¡ºæçå¼åå·¥å ·æ¯å¿ ä¸å¯å°çãå¦å¤æå¹³éå大éé¸è®¤ä¸ºé¢è¯javaå·¥ä½æ¶å¼åå·¥å ·ç使ç¨ä¹æ¯ä¸ä¸ªéè¦çèæ ¸ç¹ãè¦æ³å ¨é¢äºè§£javaå¼åå·¥å ·ï¼æ们é¦å éè¦å äºè§£ä¸ä¸javaç¨åºçå¼åè¿ç¨ï¼éè¿è¿ä¸ªè¿ç¨æ们è½å¤äºè§£å°javaå¼åé½éè¦ç¨å°é£äºå·¥å ·ã
1ãè¦æ³ç¼åç¨åºï¼éè¦ä¸ä¸ªè½ç¼åæºä»£ç çç¼è¾å·¥å ·ãä¾å¦ï¼Notepad++ï¼
2ãè¦æ³æµè¯ç¨åºï¼éè¦ä¸ä¸ªç¼è¯ãæ§è¡å·¥å ·ãä¾å¦ï¼JDKï¼
3ãè¦æ³åç¬æµè¯ä¸ä¸ªåå ï¼éè¦ä¸ä¸ªåå æµè¯å·¥å ·ãä¾å¦ï¼JUnitãTestNGï¼
4ãè¦æ³ç¼åå¼åææ¡£ï¼éè¦å¼åææ¡£ç¼è¾å·¥å ·ãä¾å¦ï¼wordãExcelãPPT;
5ãè¦æ³åæ设计ç¨åºï¼éè¦ç¨åºçåæè®¾è®¡å·¥å ·ãä¾å¦ï¼StarUMLï¼
6ãè¦æ³æ¹ä¾¿ç®¡çæºç åçæ¬å级ï¼éè¦æºç 管çåçæ¬ç»´æ¤å·¥å ·ãä¾å¦ï¼SVNï¼Gitï¼
7ãè¦æ³å¤ä¸ªå¢éåä½å¼åæè 项ç®ç¨å°å¾å¤ç第ä¸æ¹ç±»åºåJarå ãéè¦èªå¨åæå»ºå·¥å ·ãä¾å¦ï¼Mavenãgradleï¼
8ãè¦æ³å¨ä¸ä¸ªå·¥å ·ä¸ä½¿ç¨ä»¥ä¸ææåè½ï¼éè¦ç¨å°éæå¼åå·¥å ·IDEãä¾å¦ï¼Eclipseï¼
大家çå°è¿ä¹å¤å·¥å ·æ¯ä¸æ¯å¾å¤´ç¼ãåå:)æ以说javaå¼åå ¥é¨é¨æ§æç¹é«ãæ²¡å ³ç³»ãåé¢ç课ç¨æä¼ä¸ä¸ªä¸ä¸ªéæ¥ç»å¤§å®¶è¯¦ç»ä»ç»ãä¸é¢æ们å ç®åäºè§£ä¸ä¸è¿äºjavaå¼å常ç¨å·¥å ·ã