第一步:导入MAVEN的四个依赖包
Junit:
<!-- JUnit -->
<!-- https://mvnrepository.com/artifact/junit/junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
spring-test : <!--https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.9.RELEASE</version>
<scope>test</scope>
</dependency>
hamcrest-all : <!--https://mvnrepository.com/artifact/org.hamcrest/hamcrest-all -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
Mockito: <!--https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>
allOf greaterThanOrEqualTo(1) lessThanOrEqualTo(100)需要手动导入包
Num 得到值在1-100范围类 greaterThanOrEqualTo(1)表示大于等于1
lessThanOrEqualTo(100)表示小于等于100
测试业务层:
@RunWith:这个是指定使用的单元测试执行类,这里就指定的是SpringJUnit4ClassRunner.class;
@ContextConfiguration:这个指定spring配置文件所在的路径,可以同时指定多个文件;
比如:
代码
测试表示层:
测试集:
测试集(Test-Suite) - 把多个相关的测试例组织到一起
Unit Test -JUnit
目标 - 测试方法
原理 - 黑盒测试 - 不知道方法的实现细节用实际输出和预期值的比较来判定方法实现是否正确
Assert
- assertEquals / -assertNotEquals
- assertTrue / assertFalse
-assertNull / assertNotNull
- assertSame / assertNotSame
- assertThat
- Matcher
- hamcrest --->Matchers
JUnit 4
@Test
timeout ---测试的超时时间
expected --- 测试期望发生的异常
Spring TestFramework
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
- classes
- locations
@Autowired
模拟MVC请求
MockMvcBuilders.standaloneSetup(controller)
MockMvc.perform(...)
MockMvcRequestBuilders.get(url)
.andExpect(MockMvcResultMatchers.view().name(...))
.andExpect(MockMvcResultMatchers.model().attributeExists(...))
将暂时还没有的对象模拟出来
Mockito
mock(Class)
when(methodCall).thenReturn(...)
throwable分为两类: Error和Exception
运行时异常 和throw newAssertionError()不能恢复
运行时异常一般是代码书写错误
Error:
1..assert:断言 辅助调试程序 不满足assert后面的条件
直接报错
2..OutOfMemoryError:栈空间耗完了报的异常
3..StackOverFlowError:堆空间耗完
Exception:
RuntiomeException:运行时异常
1..NumberFormatException 数字格式异常
2..NullPointerException空指针异常
3..IndexOutOfBoundsException 数组下标越界
4..ClassCastException 类型转换异常
5..ArithmeticException 出现异常的运算条件时
6..NegativeArrayException 数组负下标异常
受检异常:
IOException 读写数据的时候
SqlException 执行Sql语句的时候
ClassotFoundException 加载类的时候 类不存在