mock写单元测试和查数据库的单元测试

一:mock方式

  1. 在测试类上添加注解
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
  1. 将需要测试的类bean添加进来,该类中的其他bean也添加进来
	//被测试类
	@Spy
    @InjectMocks
    private XXXMUService service;

	//测试类中添加的Autowired注解的bean
    @Mock
    private XXXDao xxxDao;
  1. 给被测试类中用到的参数、返回值类创建对象
	XXXVO parameterVO = new XXXVO();

    List<String> stringList = new ArrayList<>();

    List<XXXVo> xxxList = new ArrayList<>();
  1. 创建BeforeEach和AfterEach方法,在BeforeEach方法中给参数,返回值设置值
	@BeforeEach
    void setUp() {
        stringList.add("080");
        stringList.add("160");
        stringList.add("257");
        stringList.add("618");

        XXXVo xxxVo = new XXXVo();
        xxxVo.setXXX("202110");
        xxxList.add(xxxVo);

        parameterVO.setXXX("I");
        parameterVO.setYYY("202110");
    }

    @AfterEach
    void tearDown() {
    }
  1. 然后在test方法中设置被测试的方法
	@Test
    void function() {
    	//使用Mockito的when方法,来设置被测试方法需要用到的方法,参数可以直接通过Mockito方法进行虚拟参数设置,然后调用设置好的返回值就可以了。
        Mockito.when(xxxDao.xxx()).thenReturn(stringList );
        Mockito.when(xxxDao.xXXX(Mockito.any(),Mockito.anyList())).thenReturn(xxxList );
        //无返回值得可以通过字节码对象mock方法,参数直接mock进去
        Mockito.doNothing().when(Mockito.mock(对象.getClass()/.Class)).xXXX方法(Mockito.anyList());
        //调用被测试方法
        service.testFunction(parameterVO);
    }

二:可以检测dao层sql的单元测试

  1. 测试类上需要添加的注解。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppServer.class)
@TestPropertySource(properties = {
        "spring.datasource.data=classpath:data-base/report/data/data-xxx.sql"})
public class XxxTest 

@TestPropertySource注解中放的是sql地址
在这里插入图片描述
放在测试包的resources文件下
在这里插入图片描述
先删除表,然后将需要的字段值添加进去

  1. 设置参数以及进行测试
@Autowired
    XxxService xxxService;

    @Test
    public void testXxx(){
        try {
            XxxParameterVO xxxParameterVO = setParameterVO();
            //调用service中方法进行测试
            List<xxx> xxx = xxxService.findxxxVo(xxxParameterVO );
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    XxxParameterVO setParameterVO(){
        设置参数
    }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 测试环境的搭建(DBunit+HSQLDB) 1 1.1. DBunit的简介 1 1.1.1. DBunit简单介绍和原理 1 1.1.2. DBunit的三大核心组件 1 1.1.3. DBunit的安装使用 2 1.2. HSQLDB简介 3 1.2.2. 什么是HSQLDB 3 1.2.3. HSQLDB安装和使用 5 1.2.4. HSQLDB使用 7 1.2.5. HSLDB的使用注意事项 8 2. 数据库单元测试测试流程介绍 1 2.1. 数据库单元测试的原因 1 2.2. 测试关注点 1 2.3. 测试流程 1 3. 数据库单元测试最佳实践 2 3.1. 数据库单元测试最佳实践 2 3.1.1. 从“易测试的”应用程序体系结构开始。 2 3.1.2. 使用精确的断言。 2 3.1.3. 外化断言数据。 3 3.1.4. 编全面的测试。 4 3.1.5. 创建稳定、有意义的测试数据集。 5 3.1.6. 创建专用的测试库。 6 3.1.7. 有效地隔离测试。 7 3.1.8. 分割测试套件。 8 3.1.9. 使用适当的框架(如 DbUnit)简化过程。 9 3.2. DBunit使用最佳实践 9 3.2.1. 每一个开发人员需要搞一个数据库实例。 9 3.2.2. 使用XML文件作为DataSet 9 3.2.3. DBUnit的最佳实践是尽可能使用最小的数据集。 10 3.2.4. DatabaseOperation.CLEAN_INSERT 策略 10 3.2.5. 为相互关联的测试场景创建多个种子文件是一个很有效的策略. 10 3.3. 自我总结 10 3.3.1. 对各种类型的方法的测试策略: 10 3.3.2. 一个基TestCase。 10 3.3.3. 测试数据库的有效方法。 10 3.3.4. seed文件的设置 10 3.3.5. 一般的测试的步骤 11 4. 常见问题 1 4.1. DBUnit使用问题 1 4.1.1. 在运行测试用例的时候,出现org.dbunit.dataset.DataSetException: java.net.MalformedURLException at……………类似的异常? 1 4.1.2. 在运行测试用例的时候,出现SQLException,并且对应的sqlstate:23504,这是为什么? 1 4.2. HSQLDB相关的问题 1 4.2.1. 抛出:java.sql.SQLException: socket creation error 1 4.3. 其他问题 1

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值