单元测试框架--Junit

1.Junit介绍

--单元测试:负责对最小的软件设计单元(模块)进行验证,以发现模块中的错误

--单元测试框架

(1)提供用例组织与执行

(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>

</dependency>

2.Junit注解(用于方法)

--@Test 标识一条测试用例

--@Ignore 忽略该测试用例

--@Before 每一个测试方法之前运行

--@After 每一个测试方法之后运行

--@BeforeClass 所有测试开始之前运行 (此时该方法需static)

--@AfterClass 所有测试结果之后运行 (此时该方法需static)

3.Junit用例执行顺序

--JUnit 通过 @FixMethodOrder 注解来控制测试方法的执行顺序的。

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

public class TestRunSequence { }

MethodSorters.NAME_ASCENDING 按方法名字母顺序执行

MethodSorters.DEFAULT 默认的顺序

MethodSorters.JVM 代码中定义的方法顺序

4.Junit常用断言方法

assertArrayEquals()

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的,不能是其他修饰符

(4)被@Test注解修饰的方法要求无参,无返回值,非静态方法

 

 

 

 

posted @ 2021-06-24 21:58  meiyouyou  阅读(188)  评论(0)    收藏  举报