• sylan215
    2021-08-12
    这个例子比较简单,挺适合刚开始入门测试的人,但是同时,也可能会让开发觉得,这么简单的逻辑,一看就知道对不对、有没有问题了,何必还要用自动化测试进行覆盖呢? 一方面,这确实只是个例子,但是也不能因为简单,就不写用例,因为所有的代码都不可预知的在后面发生改变,那么作为后续的回归用例,也是一样有用的; 另一方面,需要关注 mock 的使用,实际业务场景很复杂,函数之间相互调用逻辑更是很常见,所以会经常用到 mock,但是 mock 也不可避免的会让我们规避了集成测试的测试点,所以怎么选取合适的 mock 点,并预知 mock 的风险,也是要了解的。 再补充,就算自己写了测试用例,也不要完全的依赖测试来发现所有的问题,代码思维、设计风格、编码习惯,这些预防问题发生的手段,才是最有效的。 以上,期待后续的精彩内容。

    作者回复: 很多人是简单的事情做不好,复杂的事情搞不定

    共 3 条评论
    13
  • 李威
    2021-08-06
    文中是从sevice层入手写第一个测试,可否以整洁架构图中最内层的entity入手写第一个测试,代码实现也是按先实现内层,再逐步实现外层的代码?

    作者回复: 问题是,从实体开始要测什么呢?我们得有一个出发点,服务刚好可以和需求对上。

    
    6
  • asusual
    2021-08-22
    相比Junit,Spock框架测试起来要省事很多~

    作者回复: 多谢分享

    
    4
  • 小凯
    2021-08-22
    项目运行不起来 能贴一下具体的gradle版本信息吗?

    作者回复: 运行./gradlew,它会提你下载相应的gradle版本,这种做法就是为了保持所有人用一样的gradle版本。 BTW,gradle/wrapper/gradle-wrapper.properties里面包含了gradle的版本信息。

    
    3
  • Geek_3b1096
    2021-08-25
    谢谢老师一步一步的说明添加TodoItem字段: content -> done -> index

    作者回复: 设计是演化出来的

    
    2
  • Summer 空城
    2021-08-05
    List list(final boolean all); 这个接口不符合单一职责原则吧

    作者回复: 因为它很简单,我就放在一起了。如果复杂一点,我可能会考虑拆分。

    
    2
  • Kevin
    2022-01-19
    老师好,我是从10x程序员开始关注老师的课程,目前该课程已经学习完毕,受益匪浅。然后就开始继续学习软件设计之美,目前还在学习中。后来又看到代码之丑的ToDo项目,当时就在想也要参与一下。然后就思考怎么样才能写得出彩,第一点想到的就是要实践一下tdd。现在看到程序员的测试课这门课程,果然是英雄所见略同,哈哈哈! 因为我刚换了一个工作,主要会用C++来开发。所以这里先立个flag,使用C++来实践这个课程,采用tdd来实现这个ToDo的小项目。到时把GitHub工程发出来,请老师点评。 不过时间周期可能会比较长,我尽量努力。

    作者回复: 加油加油!

    
    1
  • 时尚女人的儿子😘
    2021-08-05
    我在实现例如 TodoItemService 之前, 通常都会先测试它的 输入和输出, 两个类被测试完成后, 我才去开始用测试实现TodoItemService. 但看了您的实现手法, 一个测试集就已经能够覆盖到了输入输出.感觉您这样更简单些. 不知道我想的对不对, 还是应该一个模块对应一个测试集呢?

    作者回复: 围绕着目标去做测试,我没有特别的想过输入和输出。

    共 2 条评论
    1
  • 布凡
    2022-05-09
    老师,java 新手,课程中的思路我都能理解,但是如果自己手动实践还是有一些问题,可以考虑出一个java开发环境安装的视频吗?

    作者回复: 你可以去找Java入门课程

    
    
  • 🌿
    2021-09-22
    关于应用服务的设计,老师哪个专栏或文章里面有详细说明?

    作者回复: 《软件设计之美》

    
    