在平常的工作中,我们经常会用到单元测试,那么,单元测试应该怎么写呢?有什么需要注意的地方呢?
比如保存,数据是否保存成功,我们应该用单元测试怎么断言呢?像保存完成后,再去数据库做一边查询,看数据是否保存成功,那么,除过这种,我们还可以用下面的这种方式.
1:引入包:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>2.0.2-beta</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
2:service保存方法:
package test.boot.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import test.boot.dao.StudentDao;
import test.boot.service.StudentService;
import test.boot.vo.StuentVO;
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentDao studentDao;
public void save(StuentVO vo1) {
studentDao.save(vo1);
}
}
3:单元测试:
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.powermock.api.mockito.PowerMockito;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import test.boot.SpringbootApplicationTest;
import test.boot.dao.StudentDao;
import test.boot.service.StudentService;
import test.boot.vo.StuentVO;
import static org.mockito.Mockito.verify;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootApplicationTest.class)
public class StudentTest {
@Mock
private StudentDao studentDao;
@Mock
private StudentService studentService;
@Test
public void test02(){
StuentVO vo = new StuentVO();
vo.setName("大杜");
vo.setPhone("12345678911");
vo.setId(1L);
// 先调用保存方法
studentService.save(vo);
// 对入参进行获取
ArgumentCaptor<StuentVO> stuentVOArgumentCaptor = ArgumentCaptor.forClass(StuentVO.class);
verify(studentDao).save(stuentVOArgumentCaptor.capture());
Assert.assertEquals("姓名不一致", vo.getName(), stuentVOArgumentCaptor.getValue().getName());
}
}
4:像保存这些接口,无返回值,但是需要进行断言,看是否保存成功,我们mock保存方法,这样可以进行判断。
不断的学习,不断的充实自己,生活才会更加的美好!2024加油!美好的风景一直在路上!