
一MAVEN的核心部分1MAVEN的概念一依赖管理方便快捷的管理项目依赖的资源jar包原来想要使用第三方的jar包需要去相关官网下载对应的jar包然后在idea编辑器创建一个文件夹lib用于管理所有的第三方的jar包然后将下载的jar包拷贝复制到lib文件夹然后需要设置使用使用maven的工具能直接在maven的配置文件修改内容修改自己想要的第三方的包名maven就会自动的连网下载并启动使用二项目构建标准化 的跨平台的自动化 的项目构建方法就是自动帮助我们解析将java代码变成java class字节码文件测试打包发布三同一项目格式原因是Java的编辑器有非常多个但是每一个编辑器的代码文件路径创建方式都不太一样这导致假设需要从编辑器eclipse的代码转到idea软件可能运行不了导致人工管理成本大maven就可以统一项目的格式这样就可以将代码在多个编辑器之间进行交互使用以下就是maven规定的项目结构main的文件夹下java就是主代码文件resources就是对应的配置文件test的文件夹下java就是测试代码文件resources就是对应的测试代码的配置文件2MAVEN的底层原理底层一开始生成的测试文件java对应的class字节码文件....等等都是各各插件在实现然后实现完就会将文件存放对应的位置就是绿色部分的一仓库的概念and调用流程关键仓库分为三种仓库--仓库用于存放管理的各种各样的资源jar包等等本地仓库就是存放在自己电脑本地文件私服仓库就是一个团队或者一个公司自己创建的一个服务器然后只有自己的人才可以访问中央仓库就是一个唯一的服务器存放大量的jar包调用仓库流程1先在本地仓库查看是否有对应的jar包有就直接调用2假设没有没有私服仓库的前提访问中央仓库然后下载到本地仓库然后在调用本地仓库3假设没有有私服仓库先访问私服仓库假设也没有再访问中央仓库然后将jar包下载到私服仓库然后再下载到本地仓库私服仓库的目的就是中央仓库其实是在国外需要访问国外地址这样会导致下载速度太慢但先下载到私服仓库那么以后其他同一个公司的人下载就只要在私服仓库访问并下载就行了3Maven的配置这个直接看黑马javaweb2024 - 33集有点小复杂maven的配置文件的解析?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion !-- 对应的组织名字-- groupIdcom.itheima/groupId !-- 对应的项目名字-- artifactIdmaven-project01/artifactId !-- 对应的版本号-- version1.0-SNAPSHOT/version properties !-- 对应项目使用的语言当前的字符集-- maven.compiler.source17/maven.compiler.source maven.compiler.target17/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding /properties /project其中groupIdartifactIdversion的三个配置数据就是maven的坐标一maven的坐标作用就是定位此时的资源的文件地址就是jar的文件groupId就是域名就是比如团队名字或者公司名然后反写名字artifactId就是项目的名称version就是此时项目的版本号snapshot表示不稳定的刚开始开发的项目即快照版本release就是开发已经完善不用再更新的项目用于发布的版本二项目的导入也是直接看黑马javaweb2024-33集就行三项目的依赖配置就是假设需要某些第三方的jar包就需要去pom.xml配置文件配置依赖需要先写一个依赖标签dependencies /dependenciesdependencies dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version6.1.4/version /dependency /dependencies使用maven坐标来唯一指定某一个jar包直接去第三方查找就行然后会显示一个刷新的按钮点击完就会自动的连网下载对应的jar包maven配置的jar包有一个特性就是会将对应的依赖的jar包都一起下载下来比如A包依赖B包B包依赖C包那么下载A包就会自动把BC都下载下来四排除依赖因有上述的特性所以想要去掉这些多余的依赖就可以使用排除依赖使用标签exclusion /exclusion无需传递版本号因为依赖下来的只会有一个版本号dependencies dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version6.1.4/version !-- 排除依赖-- exclusions exclusion groupIdio.micrometer/groupId artifactIdmicrometer-observation/artifactId /exclusion /exclusions /dependency /dependencies五依赖范围目的设置依赖范围就是为了某些包不要在不规范的地方出现比如测试代码只能在test文件下使用那么就要规定 JUnit 只能在test包内使用使用方法在设置maven的坐标时再设置scope test /scope那么就只能在test文件下使用4生命周期一基础概念介绍主要关注五个阶段就行红色部分1五个部分的功能and运行流程clean移除上一次生成的文件每一次运行测试都会生成对应的文件信息complie编译目录的代码将代码编译成字节码文件test使用合适的测试单元运行测试代码会将所有代码都运行细节重点必须是测试类的名字是XxxxTest的名字类型才会运行package将编译后的文件打包如jar包war包install安装到本地目录细节假设运行某一个部分的操作那么就会将这个生命周期都运行一遍比如运行package那么test和complie都会运行一次注意clean不属于package的生命周期的一部分所以不会运行注意是运行当前部分和当前部分的前面所有运行步骤会运行2执行方式两种方式执行生命周期的方式一在idea中右侧的maven的工具栏选择对应的生命周期双击执行二在命令中通过命令执行5单元测试一测试流程二测试方法白盒测试测试人员清楚知道代码的内部逻辑主要测试代码的逻辑是否能够正常运行黑盒测试测试人员不知道代码的内部逻辑主要关注的就是代码运行出来的效果灰盒测试就是测试人员知道代码的内部逻辑但需要关注代码的内部逻辑和代码运行出来的效果三单元测试的实现1JUnit的测试方法优势单元测试就是针对最小的功能单元进行测试编写测试代码对其正确性进行测试原始方法就是使用main的方法来进行测试但是有很多缺点使用最流行的Junit的测试框架就能测试所有的代码1自动化测试所有代码文件2测试代码和源代码是分开的便于对源代码的维护3会生成测试报告方便查找到错误位置与具体原因2JUnit的测试实现一引入依赖的对应的 jar 包二编写测试代码代码需写到test文件夹下的java 的测试文件夹这个就是专门用于测试的文件夹位置测试的代码需要申明test注解编写测试代码有一定要求代码需要public申明并且返回值是viod【规定不是规范】测试方法的命名 XxxxTest【规范】public class userSericeTest { // 使用规范必须使用public void test测试方法的名字 Test public void testGetage(){ //需要创建要测试的类的对象然后调用对应的类的方法 UserService usnew UserService(); Integer age us.getAge(100000200010011011); System.out.println(age); } }注意重点必须写在 test 类下的 java 的测试文件必须和 main 文件的 java 的主要文件四单元测试结果注意单元测试结果显示绿色并不代表主代码的逻辑就是正确的只是表示测试所写的代码是正确的而不是表示我们的主方法的代码逻辑是正确的上面就是测试代码显示绿色但是结果返回错误可以使用断言的方法来判断是否结果符合预期msg就是返回报错信息可以不传递会有重载方法提示1判断预期结果和调用结果是否一致使用断言方法就能判断主方法的代码逻辑是否正确显示就是预期结果和方法调用返回的结果//使用断言来测试 Test public void testGetgender02(){ //使用 断言 来判断 预期结果 和 测试返回的结果是否一样 UserService usnew UserService(); String gender us.getGender(100000200010011011); Assertions.assertEquals(男,gender); }2判断预期的异常和调用抛出异常是否一致使用断言方法预期抛出的异常结果和方法调用的异常结果进行判断传入的参数是参数1主代码内的异常抛出的字节码参数2调用代码的异常使用lambda表达式调用的方法//判断预期异常和抛出的异常是否一样 Test public void testGetgenderAssert02(){ UserService usnew UserService(); Assertions.assertThrowsExactly(IllegalArgumentException.class,()-{ us.getGender(null); }); }结果显示绿色表示预期抛出的异常和调用抛出的异常一样五JUnit常见注释1使用23个方法两个注解需要配合使用一个表示要测试多个数据第二个表示我们定义的数据数组参数表示遍历数组的所有数据然后进行测试//使用多个测试数据进行测试使用注解parameterizedTest //细节使用parameterizedTest必须搭配注解ValueSource不然会显示数据无对应来源 ParameterizedTest ValueSource(strings {100000200010011011,100000200010011031,100000200010011051}) //参数就是遍历上面的strings的每一个字符串数据 public void testAllgender(String string){ //使用 断言 来判断 预期结果 和 测试返回的结果是否一样 UserService usnew UserService(); String gender us.getGender(string); Assertions.assertEquals(男,gender); }2使用4方法就是提示我们运行的是哪一个方法六单元测试的企业规范1需求要将所有可能的情况都覆盖到然后测试是否能够通过所有测试样例2辅助方法使用Junit自带的方法进行判断看结果的覆盖率其中class表示哪一个类被覆盖的概率比如it.heima文件夹下有两个类但是只是判断了UserService的类的方法Method表示这个类的方法覆盖情况比如UserService类下的方法有两个假设我两个方法都检验了那么结果就是100%Line表示这个类内哪一些代码被覆盖了假设没有覆盖某句代码就会显示红色Branch表示逻辑分支比如if-elsetry-catchswitch-case他们的分支是否覆盖上6Maven的常见使用问题假设出现这种情况可能就是因为第一次下载网络不佳导致下载失败但是文件夹内还是有残留文件所以后续无论专门刷新都无法下载成功需要删除残留文件但是每一次下载都会有依赖的相关的很多的文件一起下载下来一个一个删除太过繁琐所以使用系统控制器先去找到要删除文件的文件夹位置然后在搜索栏上查找cmd那么打开的就是当前目录下的控制器然后输入指令del /s *.lastUpdated 会直接删除最近一次下载的所有文件