单元测试框架--Junit
1.Junit介绍
--单元测试:负责对最小的软件设计单元(模块)进行验证,以发现模块中的错误
--单元测试框架
(2)提供丰富的断言方法,判断用例是否通过
(3)提供丰富的日志,便于查找用例执行失败的原因
(4)作用是帮助我们更自动化完成测试
--Junit:一个编写可重复测试的简单框架,是单元测试框架xUnit的一个实例
--TestNG和Junit都是针对java的测试框架,JUnit一般进行单元测试,TestNG可以进行单元测试(unit test),功能测试(function test),端到端测试(e2e test),集成测试(Integration test)等
--Junit安装
maven中的pom.xml文件
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
--@Test 标识一条测试用例
--@Ignore 忽略该测试用例
--@Before 每一个测试方法之前运行
--@After 每一个测试方法之后运行
--@BeforeClass 所有测试开始之前运行 (此时该方法需static)
--@AfterClass 所有测试结果之后运行 (此时该方法需static)
3.Junit用例执行顺序
--JUnit 通过 @FixMethodOrder 注解来控制测试方法的执行顺序的。
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestRunSequence { }
MethodSorters.NAME_ASCENDING 按方法名字母顺序执行
MethodSorters.DEFAULT 默认的顺序
4.Junit常用断言方法
assertEquals()
assertNull()
assertSame()
assertTrue()
assertThat()
fail() 让测试失败
5.Junit测试批量运行
--Junit提供了一种批量运行测试类的方法,叫测试套件
--测试套件写法原则
(1)创建一个空类作为测试套件入口,保证这个空类使用public修饰,而且存在公开的不带任何参数的构造函数,运行该类,即可批量执行测试用例
(2)使用注解 @RunWith(Cucumber.class) 修饰这个空类,JUnit 为此类测试使用套件运行器执行
(3)使用注解@CucumberOptions()设置测试套件参数
@CucumberOptions(plugin = {"html:target/site/cucumber-pretty","json:target/cucumber.json"},
features = {"src/test/java/com/yanzi/features"},glue = {"com.yanzi.stepdefinition"},tags = {"@yanzi01"})
说明:
plugin = {"html:target/site/cucumber-pretty","json:target/cucumber.json"}--执行完测试,在项目target文件下,生成html和json两种格式的测试报告
features = {"src/test/java/com/yanzi/features"}--指定.feature文件的路径
glue = {"com.yanzi.stepdefinition"}--指定对应java翻译代码的位置,用java对用例进行“翻译”,并进行测试执行
tags = {"@yanzi01"}--运行features中那些被标记为“@yanzi01”tag 的场景
[ @CucumberOptions(tags = {"@test1,@test2"}) --运行 @test1 或者 @test2 对应的测试用例 ]
[ @CucumberOptions(tags = {"@test1","@test2"}) --运行被 @test1 标记并且 @test2标记的测试用例 ]
[ @CucumberOptions(tags = {"~@test1","@test2"}) -- 不运行被 @test1 标记但是被 @test2 标记的测试用例 ]
6. 注意事项
(1)Test class can only have one constructor 被@Test注解修饰的方法所在的类只能有一个构造器
(2)Test class should have exactly one public zero-argument constructor 被@Test注解修饰的方法所在的类只能有一个修饰符为public公有的无参的构造器
(3)类默认有无参构造器,使用junit测试@Test注解,加任何带参的显式的构造器都不被允许;如果要显式声明无参构造器,也只能是public的,不能是其他修饰符

浙公网安备 33010602011771号