课程介绍
课程来自于 徐昊·TDD 项目实战70讲
你将获得
洞见测试驱动开发的实质与全貌
40+ 小时视频,演绎架构设计新思路
3 个开发框架,搞定 TDD 的落地难题
靠谱程序员必备的任务分解基本功
课程介绍
提起 TDD,肯定会掀起一番互为对立的讨论。会 TDD 的人连声称赞叫好,认为 TDD 显著提高了编码效率,让自己工作起来更有安全感。而没实践过 TDD 的人,还在困惑这是不是天方夜谭,因为没法想象为什么需要这样的方式来开发:
为什么要开发人员来写测试?难道开发人员写了测试,测试人员就不用再测了嘛?
又要写测试,又要写生产代码,效率是不是太低了?
不写测试我也能写出可以工作的软件,那么写测试能给我带来什么好处呢?
然而 TDD 并不是关于“怎么写测试”“怎么消除测试人员”“怎么让开发人员多干一份活”的编码技巧。它是以测试为里程碑点的工程化研发过程。同时将软件流程中无时无处不在的低效测试手段,用可重复的、高效的自动化测试来代替,从而获得更高的工程效能。
这才是隐藏在 TDD 工程实践背后的核心逻辑。
TDD 作为敏捷开发的重要基石,就像脚手架,为代码提供保护网。它的核心在于严格规定开发节奏,一次把需求理清,一次做对、消除返工,不用调试就能获得反馈。它最直接的收益,就是帮助你提高开发功能的效能。而最后节省出的时间,也将远远大于编写测试代码而产生的工作时间总和。
不过,学习 TDD 肯定需要花费一番力气,很多信服于 TDD 理念而自发实践的人也会被各种问题所困扰。而最佳的学习路径,就是跟一个真正会 TDD 的程序员一起写代码。
为此,我们特别邀请了 Thoughtworks 中国区 CTO 徐昊老师,来帮你搞定 TDD 的落地难题。他作为国内第一批 TDD 的践行者,是国内目前为数不多的熟练掌握 TDD 技能的大师级程序员。
他会先演示一个简单的例子,让你眼见为实,对 TDD 形成一个感性、直观的认识。同时,他也会对 TDD 抽丝剥茧,消除你对单元测试的疑惑,帮你认识到 TDD 中测试的实质与全貌。接下来的重点是,他会带着你在复杂场景下进行实战项目的练习,帮你吃透 TDD 实战中的细节。
文件目录
01-开篇词
开篇词丨为什么TDD是当前最具工程效能的研发流程?..pdf
开篇词丨为什么TDD是当前最具工程效能的研发流程?..html
开篇词丨为什么TDD是当前最具工程效能的研发流程?..m4a
课前必读丨20年前的“老古董”技术,为什么还值得开个课?..m4a
课前必读丨20年前的“老古董”技术,为什么还值得开个课?..html
课前必读丨20年前的“老古董”技术,为什么还值得开个课?..pdf
02-实战项目一:命令行参数解析
01丨TDD演示(1):任务分解法与整体工作流程..html
01丨TDD演示(1):任务分解法与整体工作流程..m4a
01丨TDD演示(1):任务分解法与整体工作流程..pdf
02丨TDD演示(2):识别坏味道与代码重构..html
02丨TDD演示(2):识别坏味道与代码重构..pdf
02丨TDD演示(2):识别坏味道与代码重构..m4a
03丨TDD演示(3):按测试策略重组测试..mp4
03丨TDD演示(3):按测试策略重组测试..html
03丨TDD演示(3):按测试策略重组测试..pdf
03丨TDD演示(3):按测试策略重组测试..m4a
04丨TDD演示(4):实现对于列表参数的支持(2)..mp4
04丨TDD演示(4):实现对于列表参数的支持..html
04丨TDD演示(4):实现对于列表参数的支持..mp4
04丨TDD演示(4):实现对于列表参数的支持..pdf
04丨TDD演示(4):实现对于列表参数的支持..m4a
05丨TDD中的测试(1):状态验证为什么是主要的使用方式?..mp4
05丨TDD中的测试(1):状态验证为什么是主要的使用方式?..m4a
05丨TDD中的测试(1):状态验证为什么是主要的使用方式?..pdf
05丨TDD中的测试(1):状态验证为什么是主要的使用方式?(2)..mp4
05丨TDD中的测试(1):状态验证为什么是主要的使用方式?..html
06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?(3)..mp4
06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?..mp4
06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?..pdf
06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?..html
06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?(2)..mp4
06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?..m4a
07丨TDD中的测试(3):集成测试还是单元测试?..mp4
07丨TDD中的测试(3):集成测试还是单元测试?..m4a
07丨TDD中的测试(3):集成测试还是单元测试?..html
07丨TDD中的测试(3):集成测试还是单元测试?..pdf
08丨TDD中的驱动(1):驱动的极限是什么?..pdf
08丨TDD中的驱动(1):驱动的极限是什么?..m4a
08丨TDD中的驱动(1):驱动的极限是什么?..html
08丨TDD中的驱动(1):驱动的极限是什么?(3)..mp4
08丨TDD中的驱动(1):驱动的极限是什么?..mp4
08丨TDD中的驱动(1):驱动的极限是什么?(2)..mp4
09丨TDD中的驱动(2):重构发挥了什么作用?..pdf
09丨TDD中的驱动(2):重构发挥了什么作用?..mp4
09丨TDD中的驱动(2):重构发挥了什么作用?..html
09丨TDD中的驱动(2):重构发挥了什么作用?..m4a
10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?(2)..mp4
10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?..m4a
10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?..html
10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?..pdf
10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?..mp4
11丨作为工程化方法的TDD:更低的成本与更高的效能..pdf
11丨作为工程化方法的TDD:更低的成本与更高的效能..html
11丨作为工程化方法的TDD:更低的成本与更高的效能..m4a
03-TDD首发·代码评点
代码评点01丨不同语言TDD的节奏有何不同?..m4a
代码评点01丨不同语言TDD的节奏有何不同?..html
代码评点01丨不同语言TDD的节奏有何不同?..pdf
代码评点01丨不同语言TDD的节奏有何不同?..mp4
代码评点01丨不同语言TDD的节奏有何不同?(2)..mp4
代码评点02丨什么是合适TDD的语言和IDE?..html
代码评点02丨什么是合适TDD的语言和IDE?..pdf
代码评点02丨什么是合适TDD的语言和IDE?..m4a
代码评点02丨什么是合适TDD的语言和IDE?..mp4
04-实战项目二丨RESTful开发框架:依赖注入容器
12丨实战中的TDD:RESTfulAPI的开发框架..m4a
12丨实战中的TDD:RESTfulAPI的开发框架..html
12丨实战中的TDD:RESTfulAPI的开发框架..mp4
12丨实战中的TDD:RESTfulAPI的开发框架..pdf
12丨实战中的TDD:RESTfulAPI的开发框架(2)..mp4
13丨DIContainer(1):如何实现基本的DI容器结构?..pdf
13丨DIContainer(1):如何实现基本的DI容器结构?..html
13丨DIContainer(1):如何实现基本的DI容器结构?..m4a
13丨DIContainer(1):如何实现基本的DI容器结构?..mp4
14丨DIContainer(2):如何通过SadPath为容器增加功能?(2)..mp4
14丨DIContainer(2):如何通过SadPath为容器增加功能?..pdf
14丨DIContainer(2):如何通过SadPath为容器增加功能?..m4a
14丨DIContainer(2):如何通过SadPath为容器增加功能?..html
14丨DIContainer(2):如何通过SadPath为容器增加功能?..mp4
15丨DIContainer(3):如何重构已有的代码?..html
15丨DIContainer(3):如何重构已有的代码?..pdf
15丨DIContainer(3):如何重构已有的代码?..mp4
15丨DIContainer(3):如何重构已有的代码?..m4a
16丨DIContainer(4):如何实现对循环依赖的处理?..m4a
16丨DIContainer(4):如何实现对循环依赖的处理?..html
16丨DIContainer(4):如何实现对循环依赖的处理?..mp4
16丨DIContainer(4):如何实现对循环依赖的处理?..pdf
17丨DIContainer(5):API接口该怎么设计?..m4a
17丨DIContainer(5):API接口该怎么设计?..pdf
17丨DIContainer(5):API接口该怎么设计?..mp4
17丨DIContainer(5):API接口该怎么设计?..html
18丨DIContainer(6):如何实现循环依赖的检查?..mp4
18丨DIContainer(6):如何实现循环依赖的检查?..pdf
18丨DIContainer(6):如何实现循环依赖的检查?..m4a
18丨DIContainer(6):如何实现循环依赖的检查?..html
19丨DIContainer(7):如何实现FieldInjection部分的功能?..mp4
19丨DIContainer(7):如何实现FieldInjection部分的功能?..pdf
19丨DIContainer(7):如何实现FieldInjection部分的功能?..m4a
19丨DIContainer(7):如何实现FieldInjection部分的功能?..html
20丨DIContainer(8):如何实现MethodInjection部分的功能?..html
20丨DIContainer(8):如何实现MethodInjection部分的功能?..mp4
20丨DIContainer(8):如何实现MethodInjection部分的功能?..pdf
20丨DIContainer(8):如何实现MethodInjection部分的功能?..m4a
21丨DIContainer(9):怎样重构测试代码?..pdf
21丨DIContainer(9):怎样重构测试代码?..html
21丨DIContainer(9):怎样重构测试代码?..m4a
21丨DIContainer(9):怎样重构测试代码?..mp4
22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?..pdf
22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?..html
22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?..mp4
22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?..m4a
23丨DIContainer(11):如何对ContainerTest进行文档化改造?..pdf
23丨DIContainer(11):如何对ContainerTest进行文档化改造?..html
23丨DI Container(11):如何对ContainerTest进行文档化改造?..mp4
23丨DIContainer(11):如何对ContainerTest进行文档化改造?..m4a
24丨DIContainer(12):如何增补功能?..pdf
24丨DI Container(12):如何增补功能?..mp4
24丨DIContainer(12):如何增补功能?..m4a
24丨DIContainer(12):如何增补功能?..html
25丨DIContainer(13):任务上的遗漏该怎么处理?..html
25丨DIContainer(13):任务上的遗漏该怎么处理?..pdf
25丨DIContainer(13):任务上的遗漏该怎么处理?..m4a
25丨DI Container(13):任务上的遗漏该怎么处理?..mp4
26丨DIContainer(14):如何重构对Type类型判断的逻辑?..pdf
26丨DIContainer(14):如何重构对Type类型判断的逻辑?..html
26丨DIContainer(14):如何重构对Type类型判断的逻辑?..m4a
26丨DI Container(14):如何重构对Type类型判断的逻辑?..mp4
27丨DIContainer(15):如何封装类型判断逻辑?..m4a
27丨DI Container(15):如何封装类型判断逻辑?..mp4
27丨DIContainer(15):如何封装类型判断逻辑?..html
27丨DIContainer(15):如何封装类型判断逻辑?..pdf
28丨DIContainer(16):行为封装会对测试产生什么影响?
28丨DIContainer(16):行为封装会对测试产生什么影响?..pdf
28丨DIContainer(16):行为封装会对测试产生什么影响?..html
28丨DIContainer(16):行为封装会对测试产生什么影响?..m4a
28丨DI Container(16):行为封装会对测试产生什么影响?..mp4
29丨DI Container(17):如何重构ContextConfig内部的实现?
29丨DIContainer(17):如何重构ContextConfig内部的实现?..html
29丨DIContainer(17):如何重构ContextConfig内部的实现?..PDF
29丨DI Container(17):如何重构ContextConfig内部的实现?..mp4
29丨DIContainer(17):如何重构ContextConfig内部的实现?..m4a
30丨DI Container(18):如何增补依赖缺失和循环依赖的测试?
30丨DIContainer(18):如何增补依赖缺失和循环依赖的测试?..PDF
30丨DI Container(18):如何增补依赖缺失和循环依赖的测试?..mp4
30丨DIContainer(18):如何增补依赖缺失和循环依赖的测试?..html
30丨DIContainer(18):如何增补依赖缺失和循环依赖的测试?..m4a
31丨DI Container(19):Qualifier部分的功能要如何完成?
31丨DIContainer(19):Qualifier部分的功能要如何完成?..html
31丨DIContainer(19):Qualifier部分的功能要如何完成?..PDF
31丨DIContainer(19):Qualifier部分的功能要如何完成?..m4a
31丨DI Container(19):Qualifier部分的功能要如何完成?..mp4
32丨DI Container(20):如何对代码和测试进行重构?
32丨DI Container(20):如何对代码和测试进行重构?..mp4
32丨DIContainer(20):如何对代码和测试进行重构?..PDF
32丨DIContainer(20):如何对代码和测试进行重构?..m4a
32丨DIContainer(20):如何对代码和测试进行重构?..html
33丨DI Container(21):如何处理Singleton生命周期部分的功能?
33丨DIContainer(21):如何处理Singleton生命周期部分的功能?..m4a
33丨DIContainer(21):如何处理Singleton生命周期部分的功能?..PDF
33丨DI Container(21):如何处理Singleton生命周期部分的功能?..mp4
33丨DIContainer(21):如何处理Singleton生命周期部分的功能?..html
34丨DI Container(22):如何对Bind的逻辑进行重构?
34丨DIContainer(22):如何对Bind的逻辑进行重构?..PDF
34丨DI Container(22):如何对Bind的逻辑进行重构?..mp4
34丨DIContainer(22):如何对Bind的逻辑进行重构?..html
34丨DIContainer(22):如何对Bind的逻辑进行重构?..m4a
35丨DIContainer(23):项目回顾与总结
35丨DIContainer(23):项目回顾与总结..html
35丨DIContainer(23):项目回顾与总结..m4a
35丨DI Container(23):项目回顾与总结..mp4
35丨DIContainer(23):项目回顾与总结..pdf
05-实战项目三|RESTfulWebServices
36丨实战中的TDD:RESTfulWebServices
36丨实战中的TDD:RESTfulWebServices(2)..mp4
36丨实战中的TDD:RESTfulWebServices..m4a
36丨实战中的TDD:RESTfulWebServices..pdf
36丨实战中的TDD:RESTfulWebServices..html
36丨实战中的TDD:RESTfulWebServices..mp4
37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互
37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互..html
37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互..m4a
37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互..pdf
37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互..mp4
38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?
38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?..html
38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?..pdf
38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?..mp4
38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?..m4a
39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序
39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序..pdf
39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序(1)..mp4
39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序..mp4
39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序..m4a
39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序..html
40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?
40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?..pdf
40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?..m4a
40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?..mp4
40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?..html
41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?
41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.mp4
41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.html
41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.pdf
41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.m4a
42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?
42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.m4a
42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.html
42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.mp4
42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.pdf
43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?
43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.html
43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.m4a
43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.mp4
43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.pdf
44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?
44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.mp4
44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.m4a
44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.pdf
44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.html
45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?
45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.m4a
45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.pdf
45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.html
45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.mp4
46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?
46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?.m4a
46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?.pdf
46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?.html
47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?
47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.mp4
47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.html
47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.pdf
47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.m4a
48丨RESTfulWebServices(12):如何调整接口和架构愿景?
48丨RESTfulWebServices(12):如何调整接口和架构愿景?.pdf
48丨RESTfulWebServices(12):如何调整接口和架构愿景?.html
48丨RESTfulWebServices(12):如何调整接口和架构愿景?.mp4
48丨RESTfulWebServices(12):如何调整接口和架构愿景?.m4a
49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?
49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.m4a
49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.html
49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.mp4
49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.pdf
50|RESTful Web Services(14):分解任务与Setup测试
50丨RESTfulWebServices(14):分解任务与Setup测试.html
50丨RESTfulWebServices(14):分解任务与Setup测试.pdf
50丨RESTfulWebServices(14):分解任务与Setup测试.m4a
50|RESTful Web Services(14):分解任务与Setup测试.mp4
51|RESTful Web Services(15):为什么选择在第一个测试之后就开始重构?
51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.pdf
51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.m4a
51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.html
51|RESTful Web Services(15):为什么选择在第一个测试之后就开始重构?.mp4
52|RESTful Web Services(16):重构手法之设计方法名的名称
52丨RESTfulWebServices(16):重构手法之设计方法名的名称.pdf
52丨RESTfulWebServices(16):重构手法之设计方法名的名称.html
52丨RESTfulWebServices(16):重构手法之设计方法名的名称.m4a
52|RESTful Web Services(16):重构手法之设计方法名的名称.mp4
53|RESTful Web Services(17):如何进行Spike的架构愿景细化?
53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.html
53|RESTful Web Services(17):如何进行Spike的架构愿景细化?.mp4
53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.m4a
53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.pdf
54|RESTful Web Services(18):如何实现UriTemplate的主要功能?
54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.html
54|RESTful Web Services(18):如何实现UriTemplate的主要功能?.mp4
54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.pdf
54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.m4a
55|RESTful Web Services(19):如何更有效地构造测试数据?
55丨RESTfulWebServices(19):如何更有效地构造测试数据?.html
55丨RESTfulWebServices(19):如何更有效地构造测试数据?.pdf
55丨RESTfulWebServices(19):如何更有效地构造测试数据?.m4a
55|RESTful Web Services(19):如何更有效地构造测试数据?.mp4
56|RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构?
56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.m4a
56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.html
56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.pdf
56|RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构?.mp4
57|RESTful Web Services(21):按照三角法,该如何增加新的测试案例?
57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.html
57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.pdf
57|RESTful Web Services(21):按照三角法,该如何增加新的测试案例?.mp4
57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.m4a
58|RESTful Web Services(22):重构还是继续完成功能?
58丨RESTfulWebServices(22):重构还是继续完成功能?.pdf
58丨RESTfulWebServices(22):重构还是继续完成功能?.m4a
58|RESTful Web Services(22):重构还是继续完成功能?.mp4
58丨RESTfulWebServices(22):重构还是继续完成功能?.html
59|RESTful Web Services(23):如何构造测试数据?
59丨RESTfulWebServices(23):如何构造测试数据?.html
59|RESTful Web Services(23):如何构造测试数据?.mp4
59丨RESTfulWebServices(23):如何构造测试数据?.m4a
59丨RESTfulWebServices(23):如何构造测试数据?.pdf
60|RESTful Web Services(24):RootResource的测试要如何改造?
60丨RESTfulWebServices(24):RootResource的测试要如何改造?.m4a
60丨RESTfulWebServices(24):RootResource的测试要如何改造?.pdf
60丨RESTfulWebServices(24):RootResource的测试要如何改造?.html
60|RESTful Web Services(24):RootResource的测试要如何改造?.mp4
61|RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构?
61丨RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?.html
61丨RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?.pdf
61 |RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构?.mp4
61丨RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?.m4a
62|RESTful Web Services(26):如何继续划分ResourceLocator的任务?
62|RESTful Web Services(26):如何继续划分ResourceLocator的任务?.mp4
62丨RESTfulWebServices(26):如何继续划分ResourceLocator的任务?.pdf
62丨RESTfulWebServices(26):如何继续划分ResourceLocator的任务?.m4a
62丨RESTfulWebServices(26):如何继续划分ResourceLocator的任务?.html
63|RESTful Web Services(27):如何通过重构修改接口?
63丨RESTfulWebServices(27):如何通过重构修改接口?.m4a
63丨RESTfulWebServices(27):如何通过重构修改接口?.html
63|RESTful Web Services(27):如何通过重构修改接口?.mp4
63丨RESTfulWebServices(27):如何通过重构修改接口?.pdf
64|RESTful Web Services(28):如何重构Resource、SubResource等接口与实现?
64丨RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?.pdf
64丨RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?.html
64丨RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?.m4a
64|RESTful Web Services(28):如何重构Resource、SubResource等接口与实现?.mp4
65|RESTful Web Services(29):后续任务将要如何划分与实现?
65丨RESTfulWebServices(29):后续任务将要如何划分与实现?.html
65丨RESTfulWebServices(29):后续任务将要如何划分与实现?.m4a
65|RESTful Web Services(29):后续任务将要如何划分与实现?.mp4
65丨RESTfulWebServices(29):后续任务将要如何划分与实现?.pdf
66|RESTful Web Services(30):什么情况下应该使用行为验证?
66丨RESTfulWebServices(30):什么情况下应该使用行为验证?.html
66丨RESTfulWebServices(30):什么情况下应该使用行为验证?.m4a
66丨RESTfulWebServices(30):什么情况下应该使用行为验证?.pdf
66|RESTful Web Services(30):什么情况下应该使用行为验证?.mp4
67|RESTful Web Services(31):对于option的测试策略应该是怎样的
67丨RESTfulWebServices(31):对于option的测试策略应该是怎样的.pdf
67|RESTful Web Services(31):对于option的测试策略应该是怎样的.mp4
67丨RESTfulWebServices(31):对于option的测试策略应该是怎样的.m4a
67丨RESTfulWebServices(31):对于option的测试策略应该是怎样的.html
声明:本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:502212423@qq.com。