JavaWeb之“Junit”
Junit测试:
黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值
白盒测试:需要写程序逻辑代码进行测试,给输入值,看程序是否能够输出期望的值,junit 称之为白盒测试
断言:期望的值称之为断言:Assert–>断言的工具类
Junit测试的步骤:–>可以独立的进行运行
1.定义一个测试类–>类名Test
2.返回值–>void
3.参数列表–>空参数
注解依赖:@Test -->Junit的依赖环境
初始化方法:用于资源的申请,所有的测试方法在执行之前都会进行执行该方法-->init()
注解依赖:@before-->存在于Junit环境中的依赖环境
释放资源方法:在所有的测试方法执行结束后,方法将会自动进行执行。-->close()
注解依赖:@after-->存在于Juni环境中的依赖环境
判定结果:
测试红色:测试失败
测试绿色:测试成功
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import cn.tedu.domain.Calculate;
public class CalculateTest {
//测试计算器的类
Calculate cal=new Calculate();
@Before
public void init(){
System.out.println("init....");
}
@Test
public void test1(){
int sum=cal.add(7, 6);
System.out.println(sum);
Assert.assertEquals(13, sum);
}
@After
public void after(){
System.out.println("after...");
}
}
测试类:
```java
package cn.tedu.domain;
import org.junit.After;
import org.junit.Before;
public class Calculate {
/*
*测试分类:
* 黑盒测试:不需要写代码,给输入值,在进行输出值的判断
* 白盒测试: 需要写一定的逻辑代码,关注的程序的具体执行流程
*/
/**
* Junit测试的使用:使用白盒测试--》可以使程序直接独立的进行运行
* 使用步骤:
* 1.定义测试方法名
* 2.返回值 void
* 3.参数列表:空参数
* 4.在测试方法上面添加@Test的注释
* 5.导入Junit的依赖
*判定结果:
* 红色:测试出错
绿色:测试成功
注意:一般使用断言操作处理结果--》输出值是否和期望的值是否一样
Assert.assertEquals();
补充:@before 初始化方法--》申请资源的方法,在所有测试方法执行前进行执行
@after 释放资源方法--》在所有的测试方法执行后进行执行
*/
//加法
public int add(int a,int b){
return a+b;
}
//减法
public int sub(int a,int b){
return a-b;
}
}
一、软件测试种类:
单元测试:主要是用于测试程序模块,确保代码运行正确。单元测试是由开发者编写并进行运行测试。一般使用的测试框架是Junit或者 testNG。测试用例一般是针对 方法 级别的测试。
集成测试:用于检测系统是否能正常工作。集成测试也是由开发者共同进行测试,与单元测试专注测试个人代码组件不同的是,集成测试是系统进行跨组件测试。
功能性测试:是一种 质量保证过程 以及 基于 测试软件组件的规范下 的 由输入得到输出的一种黑盒测试。功能性测试通常由不同的测试团队进行测试,测试用例的编写要遵循组件规范,然后根据测试输入得到的实际输出与期望值进行对比,判断功能是否正确运行。
1.单元测试的优点:
代码正确性可以得到保证(保证代码运行与我们预想的一样)
程序运行出错时,有利于我们对错误进行查找(因为我们忽略我们测试通过的代码)
有利于提升代码架构设计(用于测试的用例应力求简单低耦合,因此编写代码的时候,开发者往往会为了对代码进行测试,将其他耦合的部分进行解耦处理) ······
二、Junit单元测试
单元测试是指对代码中的最小可测试单元进行检查和验证,以便确保它们正常工作(一个单元可以是一个方法、类、包或者子系统)
1.内容
注解:
@Test :该注释表示,用其附着的公共无效方法(即用public修饰的void类型的方法 )可以作为一个测试用例;
@Before :该注释表示,用其附着的方法必须在类中的每个测试之前执行,以便执行测试某些必要的先决条件(多用于初始化);
@BeforeClass :该注释表示,用其附着的静态方法必须执行一次并在类的所有测试之前,发生这种情况时一般是测试计算共享配置方法,如连接到数据库;
@After :该注释表示,用其附着的方法在执行每项测试后执行,如执行每一个测试后重置某些变量,删除临时变量等(多用于释放资源);
@AfterClass :该注释表示,当需要执行所有的测试在JUnit测试用例类后执行,AfterClass注解可以使用以清理建立方法,如断开数据库连接,注意:附有此批注(类似于BeforeClass)的方法必须定义为静态;
@Ignore :该注释表示,当想暂时禁用特定的测试执行可以使用忽略注释,每个被注解为@Ignore的方法将不被执行。
/
* JUnit 注解示例
*/
@Test
public void testYeepay(){
Syetem.out.println("用@Test标示测试方法!");
}
@AfterClass
public static void paylus(){
Syetem.out.println("用@AfterClass标示的方法在测试用例类执行完之后执行!");
}
断言:
断言方法都来自 org.junit.Assert 类,其扩展了 java.lang.Object 类并为它们提供编写测试,以便检测故障
简而言之,我们就是通过断言方法来判断实际结果与我们预期的结果是否相同,如果相同,则测试成功,反之,则测试失败
void assertEquals([String message], expected value, actual value) :断言两个值相等,值的类型可以为int、short、long、byte、char 或者
java.lang.Object,其中第一个参数是一个可选的字符串消息;
void assertTrue([String message], boolean condition) :断言一个条件为真;
void assertFalse([String message],boolean condition) :断言一个条件为假;
void assertNotNull([String message], java.lang.Object object) :断言一个对象不为空(null);
void assertNull([String message], java.lang.Object object) :断言一个对象为空(null);
void assertSame([String message], java.lang.Object expected, java.lang.Object actual) :断言两个对象引用相同的对象;
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) :断言两个对象不是引用同一个对象;
void assertArrayEquals([String message], expectedArray, resultArray) :断言预期数组和结果数组相等,数组的类型可以为int、long、short、char、byte 或者 java.lang.Object
- 点赞
- 收藏
- 关注作者
评论(0)