做java开发不久,只是开发一些简单的需求,测试基本使用postman调用,然后交给测试人员。后来有几次部署就出错,然后se说要搞测试用例,于是就轰轰烈烈的搞起来了,然后自己也明白了测试用例代码在开发中的重要性。
我们不能总是使用点点点来测试自己的程序,一个功能要可用,就要经过充分的测试。不能等上线完了,用户提出来,我们才发现bug,再去修补。比如你一个接口,首先要测试这个接口能不能调通,然后看一些特殊情况,也就是程序的边界问题,最简单的比如求倒数1/n,其他正常情况没有问题,但是当n=0时,就会报错,就需要在这一步发现并处理。
写测试用例的本质上就是使用程序去调用我们的方法或者接口,判断和预期是否相同。
如果纯手写测试用例,代码量还是挺多的,如果每个服务都要手写,就更多了。我们在做leetcode,newcoder等的时候,提交后就是机器执行测试用例的过程。可以猜想,它不可能针对每一题都写一个测试用例代码,而是复用。也就是准备一堆输入输出,然后使用模板方法去调用我们的代码,具体伪码可表示为:
boolean test(ins,func,outs){ for i in (0, ints.length) { out = func(ins[i]); if !outs[i].equals(out){ print("error:",out); return false; } return true; }
这就是大名鼎鼎的Junit框架的最基本原理。该例只是测试一个独立函数。
如果这个函数还需要获取其他对象呢?那就得模拟函数的生存环境了。在springboot的框架中,就需要有spring对象容器,SpringbootTest就粉末登场了!其使用很简单,两个注解就完事了。
@RunWith(SpringRunner.class) @SpringBootTest(classes = SaasAbaBaseApp.class) public class MybatisPulsTest {
@Test public test(){ 测试业务 } }
这样我们简单地完成了我们的测试用例,提高了代码的可靠性。