先看Wikipedia上的解释: xUnit是一系列测试框架的统称,最开始来源于一个叫做Smalltalk的SUnit框架,现在各种面向对象的语言,如Java、Python的鼻祖就是Smalltalk,后来这些语言都借助了Sunit框架的理念,有很多通用的规范和特征,也就统称为xUnit。Java:JUnit、TestNGPython:UnitTest、PyTestTestRunner:测试的运行器TestCase:测试用例TestFixtures:测试夹具治具,用来管理测试用例的执行TestSuites:测试套件,用来编排测试用例TestExecution:测试执行,以何种顺序执行TestResultFormatter:测试结果,具备相同的格式,可被整合Assertions:断言Junit4仍然是99的研发工程师的首选框架,方便测试工程师与研发工程师交流(拉关系);TestNG的使用多用于测试工程师;Junit5还未大规模普及(最推荐的框架,成熟、好用、研发测试通用);很多框架基于Junit4定制;测试用例的名字:特性方法名测试用例描述与标签:注解测试用例的容器:类或者套件测试过程单元测试Web自动化测试SeleniumApp自动化测试Appium接口自动化测试RestAssured测试断言 1)创建maven工程XUnit,pom。xml中添加Junit依赖; 2)srctestjava下创建测试类Junit4DemoTest 注意测试类要以Test开头或者结尾mavenautoimportsrcmainjava存放应用实现代码srctestjava存放单元测试单元测试的原则之一:用例可以独立运行 基本测试demo运行: 运行结果: Junit4:Default取决于反射方法获得的列表,顺序固定(不保险)FixMethodOrder(MethodSorters。JVM)顺序可能变化FixMethodOrder(MethodSorters。NAMEASCENDING)按照名字ASCII顺序(稳定常用,建议使用) TestNG、Junit5:可以通过注解设置顺序Order 顺序演示 运行结果:Junit4:BeforeClass、AfterClassBefore、AfterTestNG:BeforeClassBeforeMethodBeforeGroup、BeforeSuiteJunit5:BeforeClassBeforeEach 实操演示1在用例执行前后增加Before和After: 运行结果: 实操演示2再增加BeforeClass和AfterClass 运行结果:基类的BeforeClass:配置读取、配置Capability、初始化driver、安装App,PageObject初始化集成的子类执行流程Before:启动并进入特定界面Test:测试用例执行After:回退到入口BeforeClass:进图特定的tab子功能页面AfterClass:关闭app基类的AfterClassdriver。quit 流程顺序:父类BeforeClass子类BeforeClass父类Before子类Before子类Test父类Test子类After父类After子类AfterClass父类AfterClass 实操演示1现在创建一个子类Junit4DemoChildrenTest,继承Junit4DemoTest,然后实现和父类一样的方法并运行子类: 运行结果: 从运行结果中我们可以看到,子类会将与父类中一样的方法进行覆盖,只执行子类中的方法 实操演示2现在将子类中的方法名进行修改,使其与父类方法名不同,再运行子类: 运行结果:RunWithSuiteClassesclass 实操演示新建一个子类Junit4DemoChildren2Test,继承Junit4DemoTest再建一个测试类SuitesTest,写上注解RunWith(Suite。class),表明这是一个测试套件,是多个测试类的一个集合,一个容器;然后利用注解Suite。SuiteClasses来设置测试类集合,设置测试类执行的顺序 运行结果: 由测试结果可以看到使用套件后,测试过程为Junit4DemoChildren2Test、Junit4DemoTest、Junit4DemoChildrenTest的顺序执行 有时候我们需要对一些特定的用例进行分组测试,这个时候就可以用Category来实现 另外在套件执行类上运用注解:Category分组需要给定一个标签,以类或者接口都可以,这里创建连个接口SlowGroup和FastGroup在用例上分别分组为SlowGroup、FastGroup和SlowGroupFastGroup指明SlowGroup组测试执行,FastGroup组的测试不执行: 测试结果:仅指明SlowGroup组测试执行 测试结果:仅指明不执行的组为FastGroup 测试结果: 有时候我们需要传入测试数据,且数据可能是多组,这个时候就需要使用参数化来传入多组数据进行测试 Junit4的参数化稍微有点麻烦: 1)先在类名上加入注解RunWith(Parameterized。class)表明要以参数化运行 2)用注解Parameterized。Parameters来设定数据源 3)最后用注解Parameterized。Parameter来指定数据源数据对应的参数 4)总览 测试结果: 从测试结果可以看到3组参数分别传入方法中,方法各执行了一次,完成参数化测试测试用例之间的顺序testfixtures的顺序继承顺序套件之间的顺序 参考文档链接 JUnit4单元测试框架〔JUnitAbout〕 JUnit5单元测试框架〔JUnit5〕 Redirecting。。。