JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
-
单元测试的好处
启动后,自动化测试,并判断执行结果, 不需要人为的干预。
只需要查看最后结果,就知道整个项目的方法接口是否通畅。
每个单元测试用例相对独立,由Junit 启动,自动调用。不需要添加额外的调用语句。 -
单元测试可能用到的注解
//引入运行环境
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SsmApp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//引入事物
@Transactional
@Rollback
//引入之前需呀启动的东西
@Before
//方法上注解
@Test
//忽略测试
@Ignore
- 单元测试需要引入的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.4.0</version>
</dependency>
- JUnit 中的重要的 API
- void assertEquals(boolean expected, boolean actual)
检查两个变量或者等式是否平衡 - void assertFalse(boolean condition)
检查条件是假的 - void assertNotNull(Object object)
检查对象不是空的 - Assert.assertThrows
检查异常
- 单元测试实例
/**
* @desc 增加单元测试
* @author ngLee
* @date 2021/2/1 20:54
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SsmApp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@MapperScan("com.example.ngssm.mapper")
@Transactional
public class AjaxControllerTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setup() {
// 实例化方式二
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void testAssertEquals(){
String a = "h";
Assert.assertEquals("h",a);
}
@Test
public void testAssertNotNull(){
JSONObject jsonObject = new JSONObject();
Assert.assertNotNull(jsonObject);
}
@Test
public void testAssertNull(){
JSONObject jsonObject = null;
Assert.assertNull(jsonObject);
}
@Test
public void testAssertTrue(){
Assert.assertTrue("ass".startsWith("a"));
}
/**
* @desc 异常1
* @author ngLee
* @date 2021/2/2 22:35
*/
@Test
public void testThrow(){
Assert.assertThrows("/ by zero", ArithmeticException.class,()->{int a= 3/0;});
}
/**
* @desc 异常2
* @author ngLee
* @date 2021/2/2 22:36
*/
@Test
public void testThrow2(){
try {
int a = 3/0;
}catch (Exception e){
Assert.assertEquals("/ by zero",e.getMessage());
}
}
/**
* @desc 模拟请求1
* @author ngLee
* @date 2021/2/2 22:37
*/
@Test
@Ignore
public void testGetNewBlogList() throws Exception {
MvcResult rs=mockMvc.perform(MockMvcRequestBuilders.get("/newblogList").characterEncoding("utf-8").param("selectNum","4")).andExpect(status().isOk()).andReturn();
System.out.println(rs.getResponse().getContentAsString(Charset.forName("UTF-8")));
}
/**
* @desc 模拟请求2
* @author ngLee
* @date 2021/2/2 22:37
*/
@Test
@Ignore
public void testSelectOneContent() throws Exception {
MvcResult rs = mockMvc.perform(MockMvcRequestBuilders.get("/content/{id}","3").characterEncoding("utf-8").param("id","2")).andDo(MockMvcResultHandlers.print()).andReturn();
System.out.println("==="+rs.getResponse().getContentAsString(Charset.forName("UTF-8")));
}
@Test
@Transactional
@Rollback //不提交脏数据
public void testSave(){
//service.save(new Object());
}
}
--本文作者:【ngLee 】
--关于博文:如果有错误的地方,还请留言指正。如转载请注明出处!如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!