10分钟学会Springboot项目单元测试_springboot单元测试怎么写

本篇来聊一下项目开发过程中至关重要的一个话题:单元测试。

早期在一些大公司的传统业务部门,比如:微软的windows、office等部门,研发和测试人员的比例基本是1:1到2:1之间,一个核心模块的测试用例动辄几十万个test case,而一次full-test都要跑几天、甚至几个星期。每个新版本发布之前都要跑好多轮full-test,软件的每个模块都有详细的文档定义清楚:测试结果要达到怎么样的标准才算是这一个模块测试通过(核心是测试通过率)。一直到整个产品的质量满足产品设计的要求了才可以发布上线,可见测试对于大型软件项目的重要性。在如此严格的软件工程管理之下,一个新版本从设计、开发,到上线,一般需要一年、甚至几年的时间。

图片

到了2010年前后,随着移动互联网的兴起,软件的开发模型也发生了重大变化,软件迭代周期越来越短,很多客户端软件都是每个月、甚至每周发布新的版本,极端的情况下一周甚至会发布两个新版本。在这种情况下,针对每个发布版本做完整的full test几乎是不可能的事情。随着时间的推移,无数公司的生与死用事实证明了快速迭代开发模型的优越性——用最短的时间贴合用户的真实需求。

在agile思想的冲击下,连软件行业巨头们——如前文提到的微软——也嗅到了被淘汰的危机感,很快大刀阔斧砍掉了几乎所有的测试团队。但是,砍掉测试团队、裁掉测试人员,不等于软件就不测试了,而是转移了测试环节:要求每个模块都要写足够数量的测试用例。只有这样,各模块之间联调才会顺利,最终发布的产品才能够达到一定的水准。

说了这么多,不过是想说一件事:研发不要写裸奔的代码,尤其是逻辑负责的模块,更要写充分的单元测试才可以。下面来看一下基于spring boot写unit test的基本步骤。本文只介绍controller的测试用例编写过程。

01 添加测试用例

添加测试用例分为下面几个步骤:

添加测试类

在test/java/com/fintech/helloworld目录下添加Java Class “HelloControllerTest”

图片

在新创建的HelloControllerTest头部添加注解:

@RunWith(SpringRunner.class)

@SpringBootTest

public class HelloControllerTest {

……

定义并配置MockMvc

@RunWith(SpringRunner.class)

@SpringBootTest

public class HelloControllerTest {


    private MockMvc mockMvc;    @Before
    public void before() {
        mockMvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
    }

……

注:每个测试用例运行之前,都会调用一次被@Before注解的函数,也就是说before函数适合用来为每个测试用例配置一些通用的环境。

添加测试用例

   @Test
    public void helloTest() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk());
    }

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,可以 点我自行获取…

02 运行单元测试

运行单元测试有两种方式:

run button

通过点击run button运行整个测试类,或者单个测试用例

图片

通过命令行

运行单元测试

mvn test

运行Test类里面的所有测试用例

mvn -Dtest=HelloControllerTest test

或者运行Test类里面某一个特定的测试用例

mvn -Dtest=HelloControllerTest#helloTest test

或者运行Test类里面的某些测试用例(函数名以hello开头的测试用例)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值