01 | 实战:实现一个 ToDo 的应用(上)
项目前的准备
- 深入了解
- 翻译
- 解释
- 总结
本文是《实现一个 ToDo 的应用(上)》的第一节课,通过实战演示如何编写测试,以及解决问题的思路。作者首先介绍了ToDo应用的具体需求,包括添加、完成和查看待办事项的功能。接着,作者提到了项目前的准备工作,包括项目自动化和需求设计。在设计先行部分,作者使用DDD战术设计方法识别了核心对象、领域服务和Repository,并解释了它们在应用中的作用。整体而言,本文重点介绍了如何准备项目、设计需求和实现设计,为读者提供了一次实战练习的机会。 文章通过实例演示了如何从需求出发,逐步实现一个ToDo应用的功能。作者首先介绍了从领域服务开始实现每个服务的思路,然后详细讨论了如何设计可测试的函数接口,并提出了对不同输入情况的处理方式。通过分析正常和异常情况,作者建立了对输入参数检测和Repository异常处理的设计规范。最后,文章引导读者动手写代码,将理论知识付诸实践。 总的来说,本文以实战演示为主线,通过具体的例子和思考过程,帮助读者理解如何从需求出发,设计可测试的函数接口,并建立设计规范。这为读者提供了一个实践机会,帮助他们更好地理解和应用所学的知识。
《程序员的测试课》,新⼈⾸单¥59
全部留言(25)
- 最新
- 精选
- sylan215这个例子比较简单,挺适合刚开始入门测试的人,但是同时,也可能会让开发觉得,这么简单的逻辑,一看就知道对不对、有没有问题了,何必还要用自动化测试进行覆盖呢? 一方面,这确实只是个例子,但是也不能因为简单,就不写用例,因为所有的代码都不可预知的在后面发生改变,那么作为后续的回归用例,也是一样有用的; 另一方面,需要关注 mock 的使用,实际业务场景很复杂,函数之间相互调用逻辑更是很常见,所以会经常用到 mock,但是 mock 也不可避免的会让我们规避了集成测试的测试点,所以怎么选取合适的 mock 点,并预知 mock 的风险,也是要了解的。 再补充,就算自己写了测试用例,也不要完全的依赖测试来发现所有的问题,代码思维、设计风格、编码习惯,这些预防问题发生的手段,才是最有效的。 以上,期待后续的精彩内容。
作者回复: 很多人是简单的事情做不好,复杂的事情搞不定
2021-08-12314 - 李威文中是从sevice层入手写第一个测试,可否以整洁架构图中最内层的entity入手写第一个测试,代码实现也是按先实现内层,再逐步实现外层的代码?
作者回复: 问题是,从实体开始要测什么呢?我们得有一个出发点,服务刚好可以和需求对上。
2021-08-066 - asusual相比Junit,Spock框架测试起来要省事很多~
作者回复: 多谢分享
2021-08-224 - Geek_3b1096谢谢老师一步一步的说明添加TodoItem字段: content -> done -> index
作者回复: 设计是演化出来的
2021-08-253 - 小凯项目运行不起来 能贴一下具体的gradle版本信息吗?
作者回复: 运行./gradlew,它会提你下载相应的gradle版本,这种做法就是为了保持所有人用一样的gradle版本。 BTW,gradle/wrapper/gradle-wrapper.properties里面包含了gradle的版本信息。
2021-08-223 - Summer 空城List list(final boolean all); 这个接口不符合单一职责原则吧
作者回复: 因为它很简单,我就放在一起了。如果复杂一点,我可能会考虑拆分。
2021-08-052 - Kevin老师好,我是从10x程序员开始关注老师的课程,目前该课程已经学习完毕,受益匪浅。然后就开始继续学习软件设计之美,目前还在学习中。后来又看到代码之丑的ToDo项目,当时就在想也要参与一下。然后就思考怎么样才能写得出彩,第一点想到的就是要实践一下tdd。现在看到程序员的测试课这门课程,果然是英雄所见略同,哈哈哈! 因为我刚换了一个工作,主要会用C++来开发。所以这里先立个flag,使用C++来实践这个课程,采用tdd来实现这个ToDo的小项目。到时把GitHub工程发出来,请老师点评。 不过时间周期可能会比较长,我尽量努力。
作者回复: 加油加油!
2022-01-191 - 时尚女人的儿子😘我在实现例如 TodoItemService 之前, 通常都会先测试它的 输入和输出, 两个类被测试完成后, 我才去开始用测试实现TodoItemService. 但看了您的实现手法, 一个测试集就已经能够覆盖到了输入输出.感觉您这样更简单些. 不知道我想的对不对, 还是应该一个模块对应一个测试集呢?
作者回复: 围绕着目标去做测试,我没有特别的想过输入和输出。
2021-08-0521 - 布凡老师,java 新手,课程中的思路我都能理解,但是如果自己手动实践还是有一些问题,可以考虑出一个java开发环境安装的视频吗?
作者回复: 你可以去找Java入门课程
2022-05-09 - 🌿关于应用服务的设计,老师哪个专栏或文章里面有详细说明?
作者回复: 《软件设计之美》
2021-09-22