网上祭奠类网站怎么做,wordpress seo,高端 网站,建筑网片的用途一、一个简单的例子
1、引入Maven依赖#xff1a;JUnit框架和Surefire插件 2.在src/test/java目录下新建名字以“Test”结尾的测试类#xff0c;并用Test注释测试方法 3.运行单元测试用例 或用mvn命令运行单元测试#xff1a; 二、单元测试基础之单元测试框架#xff1a;J…一、一个简单的例子
1、引入Maven依赖JUnit框架和Surefire插件 2.在src/test/java目录下新建名字以“Test”结尾的测试类并用Test注释测试方法 3.运行单元测试用例 或用mvn命令运行单元测试 二、单元测试基础之单元测试框架Junit 4
项目父模块已经引入了JUnit 4所以在项目中选用JUnit4 官网JUnit – About
API文档JUnit API
FAQJUnit – Frequently Asked Questions Maven依赖
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.12/version
/dependency
1、Junit用于编写和运行测试用例的开源框架
JUnit主要提供了如下3个方面的能力
Assertions断言实际值是否等于期望值包含一组重载方法
2Fixtures用于保证测试用例可重复性的固定的基准环境
4Test runners用于运行测试用例的机制。 2、Assertions
所有断言方法都是org.junit.Assert类的静态方法例如
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue; 3、Fixtures
在测试方法执行之前或之后执行用于保证测试方法的执行环境是确定的。Junit4支持4个注解
BeforeClass在当前测试类的所有测试方法之前执行只执行一次
AfterClass在当前测试类的所有测试方法之后执行只执行一次
Before在每个测试方法执行之前都会执行一次
After在每个测试方法执行之后都会执行一次。 4、Test runners
1JUnit运行测试用例的入口是JUnitCore类支持如下两种方式
方式1在Java应用中
org.junit.runner.JUnitCore.runClasses(TestClass1.class, ...);
方式2在命令行中
java org.junit.runner.JUnitCore TestClass1 [...other test classes...]
JUnit默认使用一个叫做BlockJUnit4ClassRunner的Runner来运行测试用例可以用RunWith(XXX.class)注解测试类来替换成其它Runner如提供Spring容器支持的SpringJUnit4ClassRunner。 2默认情况下JUnit会为每个测试方法创建测试对象
测试类至少包含一个测试方法的类
测试方法由Test注解的实例方法
生命周期方法由BeforeAll,、AfterAll、BeforeClass或AfterClass注解的方法。
注意测试方法和生命周期方法不能是抽象方法且不能有返回值
测试类、测试方法和生命周期方法不能是private但是也不一定要public。 三、单元测试基础之运行环境Maven的Surefire插件和Failsafe插件
1、测试代码与业务代码不同没有直接的main函数入口通常需要借助特定的工具来运行
1IDE支持如IDEA、Eclipse、NetBeans和VS等
2构建工具支持如Maven和Ant
3JUnit提供的命令行工具。 2、Maven的default生命周期 Maven默认情况下为每个阶段绑定相应的goal。例如当在POM文件中将模块的packaging元素设为jar时Maven会把如下goal绑定到相应的阶段 其中被绑定到test阶段的surefire:test用于运行应用中的单元测试。为了方便设置Surefire插件的参数建议把它显式地添加到POM文件中。例如
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.19.1/version/plugin/plugins
/build
在POM文件所在目录执行
mvn package
Maven在执行到test阶段的时候会查找并运行src/test/java目录下的单元测试。 3、Surefire插件和Failsafe插件
1单元测试 vs 集成测试
1单元测试一般是类级别的通常是方法级别的。每个测试用例通常只验证一个方法或一个类的功能不负责检查跨类或者跨系统的交互
2集成测试的测试粒度比单元测试的粗例如验证整个API服务或RPC服务的功能是否符合预期。由于要启动整个服务会对外界环境如数据库、Apollo配置有比较强的依赖有些应用可能还需要把包部署到外部容器才能进行测试。 2Maven对单元测试和集成测试的支持Surefire插件和Failsafe插件
1Surefire插件用于运行单元测试。运行测试用例和验证结果在同一个构建阶段一旦发现测试用例运行失败就马上终止构建并标志为失败。
2Failsafe插件用于运行集成测试。运行测试用例和验证结果在不同的构建阶段测试用例运行失败不会马上终止构建所以可以在终止构建前把测试用例依赖的外部环境释放掉。它的命名就跟这一特性有关——即使测试用例失败也能以安全的方式结束构建过程。 4、Surefire插件和Failsafe插件与Maven的default生命周期
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.19.1/versionconfigurationargLine${test.jvm.option}/argLine/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-failsafe-plugin/artifactIdversion2.18.1/versionconfigurationargLine${test.jvm.option}/argLine/configurationexecutionsexecutiongoalsgoalintegration-test/goalgoalverify/goal/goals/execution/executions/plugin/plugins
/build 默认情况下Surefire插件的surefire:test 绑定到test阶段负责运行和验证单元测试
Failsafe插件的failsafe:integration-test 绑定到integration-test阶段负责运行集成测试failsafe:verify 绑定到verify阶段负责验证集成测试。
在POM文件所在目录执行
mvn verify
Maven依次编译源码让Surefire插件运行单元测试用例打包让Failsafe插件运行集成测试用例。 5、Surefire插件和Failsafe插件分别运行哪些测试用例
1Surefire插件默认查找并运行符合以下条件的测试类 2Failsafe插件默认查找并运行符合以下条件的测试类 可以通过include和exclude属性来添加或排除特定的测试类。
总结对比Surefire插件的默认执行测试类可见这两个插件的测试类可以重叠可以让某些测试类既在test阶段执行也在integration-test阶段执行。如果不想让这两种测试类重叠可以将所有单元测试类的类名以“Test”结尾并且不以“IT”开头并将集成测试类的类名以“IT”结尾并且不以“Test”开头。 6、如何跳过测试用例
方式1总是跳过运行单元测试和集成测试
将skipTests参数默认false设置为true跳过运行单元测试和集成测试
project
[...]buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion3.0.0-M5/versionconfigurationskipTeststrue/skipTests/configuration/plugin/plugins/build[...]
/project
方式2默认跳过运行单元测试和集成测试但是在需要的时候通过mvn命令参数关闭跳过
将skipTests属性设置为true在需要的时候指定mvn命令参数skipTest为false
project[...]propertiesskipTeststrue/skipTests/properties[...]buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion3.0.0-M5/versionconfigurationskipTests${skipTests}/skipTests/configuration/plugin/plugins/build[...]
/project
mvn install -DskipTestsfalse
如果只打算跳过由Failsafe插件执行的集成测试可以用skipITs参数代替。 方式3跳过单元测试和集成测试的编译和运行
指定mvn命令参数maven.test.skip默认false为true。
mvn install -Dmaven.test.skiptrue 方式4运行单元测试但是忽略测试结果
指定mvn命令参数maven.test.failure.ignore默认false为true
mvn test -Dmaven.test.failure.ignoretrue Surefire插件和Failsafe插件如何运行测试用例
这里以Surefire插件为例Failsafe插件类似
默认情况下Surefire插件创建一个子进程来运行所有测试类
2子进程的主要工作就是指定类加载路径并运行测试类
java -classpath foo.jar:bar.jar MyApp
3Surefire插件支持以多线程和多进程的方式运行测试用例以加快测试速度。