TDD 项目实战 70 讲
TDD 项目实战 70 讲

课程主体可分为两个部分。

第一部分:演示开发全过程,见识真正的 TDD

首先,我们将从一个编码练习级别的小例子入手,展示使用 TDD 的方式来实现一个简单功能的开发全过程。让你眼见为实,对 TDD 形成一个感性、直观的认识。

并以此为引子,串联起 TDD 的所有相关知识点,为之后的实战练习打下基础。同时,你也会明确知道 TDD 作为工程方法的核心优势在哪里。如果你需要说服周围的同事、领导开始采用 TDD 方法,这将给你提供足够的弹药。

第二部分:实战细节全剖析,用 TDD 从头实现

然后,我们将进入实战项目环节。老师将以 3 个技术框架为例(IoC 容器、RESTful 框架、SQL mapper 框架),展示如何使用 TDD 的方式从头来实现它们,实战的细节将一览无遗。

TDD 有点像物理,定理写出来很简单,但需要在不同的场景下练习,才能应用得得心应手。所以,你会在这个部分看到 3 个实战项目,将会有 40+ 小时的视频演示。由徐昊老师在不同的上下文中带着你反复练习,帮助你搞定 TDD 的落地难题。

〖资源截图〗:

TDD 项目实战 70 讲
TDD 项目实战 70 讲

〖资源目录〗:

  • ├──01-开篇词
  • | ├──开篇词丨为什么TDD是当前最具工程效能的研发流程?
  • | | ├──开篇词|为什么TDD是当前最具工程效能的研发流程? (1).ts 14.57M
  • | | ├──开篇词|为什么TDD是当前最具工程效能的研发流程? (2).ts 15.25M
  • | | ├──开篇词|为什么TDD是当前最具工程效能的研发流程? (3).ts 19.93M
  • | | ├──开篇词|为什么TDD是当前最具工程效能的研发流程? (4).ts 27.42M
  • | | ├──开篇词|为什么TDD是当前最具工程效能的研发流程? (5).ts 19.19M
  • | | ├──开篇词|为什么TDD是当前最具工程效能的研发流程? (6).ts 5.79M
  • | | ├──开篇词丨为什么TDD是当前最具工程效能的研发流程?.html 11.36M
  • | | ├──开篇词丨为什么TDD是当前最具工程效能的研发流程?.m4a 8.73M
  • | | └──开篇词丨为什么TDD是当前最具工程效能的研发流程?.pdf 9.61M
  • | └──课前必读丨20年前的“老古董”技术,为什么还值得开个课?
  • | | ├──课前必读丨20年前的“老古董”技术,为什么还值得开个课?.html 2.55M
  • | | ├──课前必读丨20年前的“老古董”技术,为什么还值得开个课?.m4a 7.15M
  • | | └──课前必读丨20年前的“老古董”技术,为什么还值得开个课?.pdf 3.46M
  • ├──02-实战项目一:命令行参数解析
  • | ├──01丨TDD演示(1):任务分解法与整体工作流程
  • | | ├──01|TDD演示(1):任务分解法与整体工作流程 (1).ts 7.73M
  • | | ├──01|TDD演示(1):任务分解法与整体工作流程 (2).ts 13.65M
  • | | ├──01|TDD演示(1):任务分解法与整体工作流程 (3).ts 14.29M
  • | | ├──01|TDD演示(1):任务分解法与整体工作流程 (4).ts 5.06M
  • | | ├──01|TDD演示(1):任务分解法与整体工作流程 (5).ts 19.38M
  • | | ├──01|TDD演示(1):任务分解法与整体工作流程 (6).ts 12.62M
  • | | ├──01丨TDD演示(1):任务分解法与整体工作流程.html 12.45M
  • | | ├──01丨TDD演示(1):任务分解法与整体工作流程.m4a 4.60M
  • | | └──01丨TDD演示(1):任务分解法与整体工作流程.pdf 11.66M
  • | ├──02丨TDD演示(2):识别坏味道与代码重构
  • | | ├──02|TDD演示(2):识别坏味道与代码重构 (10).ts 27.12M
  • | | ├──02|TDD演示(2):识别坏味道与代码重构 (8).mp4 17.21M
  • | | ├──02|TDD演示(2):识别坏味道与代码重构 (8).ts 14.58M
  • | | ├──02丨TDD演示(2):识别坏味道与代码重构.html 6.31M
  • | | ├──02丨TDD演示(2):识别坏味道与代码重构.m4a 3.80M
  • | | └──02丨TDD演示(2):识别坏味道与代码重构.pdf 5.56M
  • | ├──03丨TDD演示(3):按测试策略重组测试
  • | | ├──03|TDD演示(3):按测试策略重组测试 (1).ts 16.02M
  • | | ├──03|TDD演示(3):按测试策略重组测试 (2).ts 13.86M
  • | | ├──03|TDD演示(3):按测试策略重组测试 (3).ts 21.26M
  • | | ├──03|TDD演示(3):按测试策略重组测试 (4).ts 31.32M
  • | | ├──03丨TDD演示(3):按测试策略重组测试.html 10.09M
  • | | ├──03丨TDD演示(3):按测试策略重组测试.m4a 4.74M
  • | | └──03丨TDD演示(3):按测试策略重组测试.pdf 6.64M
  • | ├──04丨TDD演示(4):实现对于列表参数的支持
  • | | ├──04|TDD演示(4):实现对于列表参数的支持 (1).ts 16.74M
  • | | ├──04|TDD演示(4):实现对于列表参数的支持 (2).ts 20.44M
  • | | ├──04|TDD演示(4):实现对于列表参数的支持 (3).ts 25.01M
  • | | ├──04|TDD演示(4):实现对于列表参数的支持 (4).ts 26.11M
  • | | ├──04|TDD演示(4):实现对于列表参数的支持 (5).ts 25.99M
  • | | ├──04丨TDD演示(4):实现对于列表参数的支持.html 8.94M
  • | | ├──04丨TDD演示(4):实现对于列表参数的支持.m4a 5.21M
  • | | └──04丨TDD演示(4):实现对于列表参数的支持.pdf 8.06M
  • | ├──05丨TDD中的测试(1):状态验证为什么是主要的使用方式?
  • | | ├──05|TDD中的测试(1):状态验证为什么是主要的使用方式? (1).ts 9.30M
  • | | ├──05|TDD中的测试(1):状态验证为什么是主要的使用方式? (2).ts 13.22M
  • | | ├──05|TDD中的测试(1):状态验证为什么是主要的使用方式? (3).ts 7.78M
  • | | ├──05|TDD中的测试(1):状态验证为什么是主要的使用方式? (4).ts 25.78M
  • | | ├──05丨TDD中的测试(1):状态验证为什么是主要的使用方式?.html 9.75M
  • | | ├──05丨TDD中的测试(1):状态验证为什么是主要的使用方式?.m4a 5.66M
  • | | └──05丨TDD中的测试(1):状态验证为什么是主要的使用方式?.pdf 5.66M
  • | ├──06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?
  • | | ├──06|TDD中的测试(2):行为验证为什么应该尽量避免使用? (1).ts 11.14M
  • | | ├──06|TDD中的测试(2):行为验证为什么应该尽量避免使用? (2).ts 17.77M
  • | | ├──06|TDD中的测试(2):行为验证为什么应该尽量避免使用? (3).ts 13.76M
  • | | ├──06|TDD中的测试(2):行为验证为什么应该尽量避免使用? (4).ts 9.31M
  • | | ├──06|TDD中的测试(2):行为验证为什么应该尽量避免使用? (5).ts 9.05M
  • | | ├──06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?.html 1.67M
  • | | ├──06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?.m4a 6.96M
  • | | └──06丨TDD中的测试(2):行为验证为什么应该尽量避免使用?.pdf 9.41M
  • | ├──07丨TDD中的测试(3):集成测试还是单元测试?
  • | | ├──07丨TDD中的测试(3):集成测试还是单元测试?.html 2.58M
  • | | ├──07丨TDD中的测试(3):集成测试还是单元测试?.m4a 6.08M
  • | | ├──07丨TDD中的测试(3):集成测试还是单元测试?.mp4 39.94M
  • | | └──07丨TDD中的测试(3):集成测试还是单元测试?.pdf 3.80M
  • | ├──08丨TDD中的驱动(1):驱动的极限是什么?
  • | | ├──08|TDD中的驱动(1):驱动的极限是什么? (1).ts 10.10M
  • | | ├──08|TDD中的驱动(1):驱动的极限是什么? (2).ts 17.27M
  • | | ├──08|TDD中的驱动(1):驱动的极限是什么? (3).ts 22.49M
  • | | ├──08|TDD中的驱动(1):驱动的极限是什么? (4).ts 15.94M
  • | | ├──08丨TDD中的驱动(1):驱动的极限是什么?.html 4.01M
  • | | ├──08丨TDD中的驱动(1):驱动的极限是什么?.m4a 5.27M
  • | | └──08丨TDD中的驱动(1):驱动的极限是什么?.pdf 2.60M
  • | ├──09丨TDD中的驱动(2):重构发挥了什么作用?
  • | | ├──09|TDD中的驱动(2):重构发挥了什么作用? (1).ts 10.40M
  • | | ├──09|TDD中的驱动(2):重构发挥了什么作用? (2).ts 14.58M
  • | | ├──09|TDD中的驱动(2):重构发挥了什么作用? (3).ts 12.46M
  • | | ├──09|TDD中的驱动(2):重构发挥了什么作用? (4).ts 15.45M
  • | | ├──09|TDD中的驱动(2):重构发挥了什么作用? (5).ts 12.75M
  • | | ├──09丨TDD中的驱动(2):重构发挥了什么作用?.html 5.58M
  • | | ├──09丨TDD中的驱动(2):重构发挥了什么作用?.m4a 4.48M
  • | | └──09丨TDD中的驱动(2):重构发挥了什么作用?.pdf 4.82M
  • | ├──10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?
  • | | ├──10|TDD中的驱动(3):何为经典学派?何为伦敦学派? (1).ts 32.49M
  • | | ├──10|TDD中的驱动(3):何为经典学派?何为伦敦学派? (2).ts 9.26M
  • | | ├──10|TDD中的驱动(3):何为经典学派?何为伦敦学派? (3).ts 14.06M
  • | | ├──10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?.html 1.78M
  • | | ├──10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?.m4a 3.98M
  • | | └──10丨TDD中的驱动(3):何为经典学派?何为伦敦学派?.pdf 1.24M
  • | └──11丨作为工程化方法的TDD:更低的成本与更高的效能
  • | | ├──11丨作为工程化方法的TDD:更低的成本与更高的效能.html 7.29M
  • | | ├──11丨作为工程化方法的TDD:更低的成本与更高的效能.m4a 6.54M
  • | | └──11丨作为工程化方法的TDD:更低的成本与更高的效能.pdf 6.40M
  • ├──03-TDD首发·代码评点
  • | ├──代码评点01|不同语言TDD的节奏有何不同? (1).ts 8.89M
  • | ├──代码评点01|不同语言TDD的节奏有何不同? (2).ts 13.16M
  • | ├──代码评点01|不同语言TDD的节奏有何不同? (3).ts 17.42M
  • | ├──代码评点01丨不同语言TDD的节奏有何不同?.html 2.70M
  • | ├──代码评点01丨不同语言TDD的节奏有何不同?.m4a 917.88kb
  • | ├──代码评点01丨不同语言TDD的节奏有何不同?.pdf 3.41M
  • | ├──代码评点02|什么是合适TDD的语言和IDE? (1).ts 26.03M
  • | ├──代码评点02|什么是合适TDD的语言和IDE? (2).ts 15.97M
  • | ├──代码评点02丨什么是合适TDD的语言和IDE?.html 1.37M
  • | ├──代码评点02丨什么是合适TDD的语言和IDE?.m4a 1.03M
  • | └──代码评点02丨什么是合适TDD的语言和IDE?.pdf 1.90M
  • ├──04-实战项目二丨RESTful开发框架:依赖注入容器
  • | ├──12丨实战中的TDD:RESTfulAPI的开发框架
  • | | ├──12丨实战中的TDD:RESTfulAPI的开发框架(2).mp4 58.42M
  • | | ├──12丨实战中的TDD:RESTfulAPI的开发框架.html 2.23M
  • | | ├──12丨实战中的TDD:RESTfulAPI的开发框架.m4a 2.05M
  • | | ├──12丨实战中的TDD:RESTfulAPI的开发框架.mp4 12.53M
  • | | └──12丨实战中的TDD:RESTfulAPI的开发框架.pdf 2.35M
  • | ├──13丨DIContainer(1):如何实现基本的DI容器结构?
  • | | ├──13丨DIContainer(1):如何实现基本的DI容器结构?.html 3.63M
  • | | ├──13丨DIContainer(1):如何实现基本的DI容器结构?.m4a 1.64M
  • | | ├──13丨DIContainer(1):如何实现基本的DI容器结构?.mp4 46.50M
  • | | └──13丨DIContainer(1):如何实现基本的DI容器结构?.pdf 3.58M
  • | ├──14丨DIContainer(2):如何通过SadPath为容器增加功能?
  • | | ├──14丨DIContainer(2):如何通过SadPath为容器增加功能?(2).mp4 43.18M
  • | | ├──14丨DIContainer(2):如何通过SadPath为容器增加功能?.html 4.57M
  • | | ├──14丨DIContainer(2):如何通过SadPath为容器增加功能?.m4a 888.16kb
  • | | ├──14丨DIContainer(2):如何通过SadPath为容器增加功能?.mp4 30.20M
  • | | └──14丨DIContainer(2):如何通过SadPath为容器增加功能?.pdf 5.00M
  • | ├──15丨DIContainer(3):如何重构已有的代码?
  • | | ├──15|DI Container(3):如何重构已有的代码? (1).ts 10.35M
  • | | ├──15|DI Container(3):如何重构已有的代码? (2).ts 39.03M
  • | | ├──15|DI Container(3):如何重构已有的代码? (3).ts 17.55M
  • | | ├──15丨DIContainer(3):如何重构已有的代码?.html 3.65M
  • | | ├──15丨DIContainer(3):如何重构已有的代码?.m4a 993.17kb
  • | | └──15丨DIContainer(3):如何重构已有的代码?.pdf 5.34M
  • | ├──16丨DIContainer(4):如何实现对循环依赖的处理?
  • | | ├──16丨DIContainer(4):如何实现对循环依赖的处理?.html 4.18M
  • | | ├──16丨DIContainer(4):如何实现对循环依赖的处理?.m4a 1.45M
  • | | ├──16丨DIContainer(4):如何实现对循环依赖的处理?.mp4 88.78M
  • | | └──16丨DIContainer(4):如何实现对循环依赖的处理?.pdf 2.56M
  • | ├──17丨DIContainer(5):API接口该怎么设计?
  • | | ├──17丨DIContainer(5):API接口该怎么设计?.html 3.35M
  • | | ├──17丨DIContainer(5):API接口该怎么设计?.m4a 1.22M
  • | | ├──17丨DIContainer(5):API接口该怎么设计?.mp4 64.15M
  • | | └──17丨DIContainer(5):API接口该怎么设计?.pdf 1.57M
  • | ├──18丨DIContainer(6):如何实现循环依赖的检查?
  • | | ├──18丨DIContainer(6):如何实现循环依赖的检查?.html 3.72M
  • | | ├──18丨DIContainer(6):如何实现循环依赖的检查?.m4a 1.48M
  • | | ├──18丨DIContainer(6):如何实现循环依赖的检查?.mp4 63.55M
  • | | └──18丨DIContainer(6):如何实现循环依赖的检查?.pdf 5.12M
  • | ├──19丨DIContainer(7):如何实现FieldInjection部分的功能?
  • | | ├──19丨DIContainer(7):如何实现FieldInjection部分的功能?.html 2.39M
  • | | ├──19丨DIContainer(7):如何实现FieldInjection部分的功能?.m4a 1.02M
  • | | ├──19丨DIContainer(7):如何实现FieldInjection部分的功能?.mp4 75.61M
  • | | └──19丨DIContainer(7):如何实现FieldInjection部分的功能?.pdf 2.52M
  • | ├──20丨DIContainer(8):如何实现MethodInjection部分的功能?
  • | | ├──20丨DIContainer(8):如何实现MethodInjection部分的功能?.html 2.23M
  • | | ├──20丨DIContainer(8):如何实现MethodInjection部分的功能?.m4a 650.07kb
  • | | ├──20丨DIContainer(8):如何实现MethodInjection部分的功能?.mp4 85.71M
  • | | └──20丨DIContainer(8):如何实现MethodInjection部分的功能?.pdf 2.57M
  • | ├──21丨DIContainer(9):怎样重构测试代码?
  • | | ├──21丨DIContainer(9):怎样重构测试代码?.html 2.50M
  • | | ├──21丨DIContainer(9):怎样重构测试代码?.m4a 1.14M
  • | | ├──21丨DIContainer(9):怎样重构测试代码?.mp4 108.64M
  • | | └──21丨DIContainer(9):怎样重构测试代码?.pdf 2.73M
  • | ├──22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?
  • | | ├──22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?.html 1.70M
  • | | ├──22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?.m4a 1.00M
  • | | ├──22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?.mp4 92.54M
  • | | └──22丨DIContainer(10):怎样将大粒度的测试重构为等效的小粒度测试代码?.pdf 1.62M
  • | ├──23丨DIContainer(11):如何对ContainerTest进行文档化改造?
  • | | ├──23丨DI Container(11):如何对ContainerTest进行文档化改造?.mp4 114.14M
  • | | ├──23丨DIContainer(11):如何对ContainerTest进行文档化改造?.html 1.79M
  • | | ├──23丨DIContainer(11):如何对ContainerTest进行文档化改造?.m4a 878.34kb
  • | | └──23丨DIContainer(11):如何对ContainerTest进行文档化改造?.pdf 2.04M
  • | ├──24丨DIContainer(12):如何增补功能?
  • | | ├──24丨DI Container(12):如何增补功能?.mp4 88.13M
  • | | ├──24丨DIContainer(12):如何增补功能?.html 1.78M
  • | | ├──24丨DIContainer(12):如何增补功能?.m4a 1.10M
  • | | └──24丨DIContainer(12):如何增补功能?.pdf 1.78M
  • | ├──25丨DIContainer(13):任务上的遗漏该怎么处理?
  • | | ├──25丨DI Container(13):任务上的遗漏该怎么处理?.mp4 88.48M
  • | | ├──25丨DIContainer(13):任务上的遗漏该怎么处理?.html 2.03M
  • | | ├──25丨DIContainer(13):任务上的遗漏该怎么处理?.m4a 741.40kb
  • | | └──25丨DIContainer(13):任务上的遗漏该怎么处理?.pdf 1.71M
  • | ├──26丨DIContainer(14):如何重构对Type类型判断的逻辑?
  • | | ├──26丨DI Container(14):如何重构对Type类型判断的逻辑?.mp4 78.32M
  • | | ├──26丨DIContainer(14):如何重构对Type类型判断的逻辑?.html 2.58M
  • | | ├──26丨DIContainer(14):如何重构对Type类型判断的逻辑?.m4a 1.04M
  • | | └──26丨DIContainer(14):如何重构对Type类型判断的逻辑?.pdf 3.16M
  • | ├──27丨DIContainer(15):如何封装类型判断逻辑?
  • | | ├──27丨DI Container(15):如何封装类型判断逻辑?.mp4 120.11M
  • | | ├──27丨DIContainer(15):如何封装类型判断逻辑?.html 2.38M
  • | | ├──27丨DIContainer(15):如何封装类型判断逻辑?.m4a 879.16kb
  • | | └──27丨DIContainer(15):如何封装类型判断逻辑?.pdf 2.50M
  • | ├──28丨DIContainer(16):行为封装会对测试产生什么影响?
  • | | ├──28丨DI Container(16):行为封装会对测试产生什么影响?.mp4 69.26M
  • | | ├──28丨DIContainer(16):行为封装会对测试产生什么影响?.html 2.75M
  • | | ├──28丨DIContainer(16):行为封装会对测试产生什么影响?.m4a 757.24kb
  • | | └──28丨DIContainer(16):行为封装会对测试产生什么影响?.pdf 2.47M
  • | ├──29丨DI Container(17):如何重构ContextConfig内部的实现?
  • | | ├──29丨DI Container(17):如何重构ContextConfig内部的实现?.mp4 105.28M
  • | | ├──29丨DIContainer(17):如何重构ContextConfig内部的实现?.html 2.54M
  • | | ├──29丨DIContainer(17):如何重构ContextConfig内部的实现?.m4a 1.02M
  • | | └──29丨DIContainer(17):如何重构ContextConfig内部的实现?.PDF 2.16M
  • | ├──30丨DI Container(18):如何增补依赖缺失和循环依赖的测试?
  • | | ├──30丨DI Container(18):如何增补依赖缺失和循环依赖的测试?.mp4 93.30M
  • | | ├──30丨DIContainer(18):如何增补依赖缺失和循环依赖的测试?.html 2.46M
  • | | ├──30丨DIContainer(18):如何增补依赖缺失和循环依赖的测试?.m4a 1.26M
  • | | └──30丨DIContainer(18):如何增补依赖缺失和循环依赖的测试?.PDF 2.37M
  • | ├──31丨DI Container(19):Qualifier部分的功能要如何完成?
  • | | ├──31丨DI Container(19):Qualifier部分的功能要如何完成?.mp4 90.87M
  • | | ├──31丨DIContainer(19):Qualifier部分的功能要如何完成?.html 2.56M
  • | | ├──31丨DIContainer(19):Qualifier部分的功能要如何完成?.m4a 1017.36kb
  • | | └──31丨DIContainer(19):Qualifier部分的功能要如何完成?.PDF 2.97M
  • | ├──32丨DI Container(20):如何对代码和测试进行重构?
  • | | ├──32丨DI Container(20):如何对代码和测试进行重构?.mp4 105.77M
  • | | ├──32丨DIContainer(20):如何对代码和测试进行重构?.html 2.44M
  • | | ├──32丨DIContainer(20):如何对代码和测试进行重构?.m4a 1.61M
  • | | └──32丨DIContainer(20):如何对代码和测试进行重构?.PDF 2.68M
  • | ├──33丨DI Container(21):如何处理Singleton生命周期部分的功能?
  • | | ├──33丨DI Container(21):如何处理Singleton生命周期部分的功能?.mp4 121.73M
  • | | ├──33丨DIContainer(21):如何处理Singleton生命周期部分的功能?.html 1.93M
  • | | ├──33丨DIContainer(21):如何处理Singleton生命周期部分的功能?.m4a 1.04M
  • | | └──33丨DIContainer(21):如何处理Singleton生命周期部分的功能?.PDF 2.88M
  • | ├──34丨DI Container(22):如何对Bind的逻辑进行重构?
  • | | ├──34丨DI Container(22):如何对Bind的逻辑进行重构?.mp4 84.45M
  • | | ├──34丨DIContainer(22):如何对Bind的逻辑进行重构?.html 1.72M
  • | | ├──34丨DIContainer(22):如何对Bind的逻辑进行重构?.m4a 991.07kb
  • | | └──34丨DIContainer(22):如何对Bind的逻辑进行重构?.PDF 2.60M
  • | └──35丨DIContainer(23):项目回顾与总结
  • | | ├──35丨DI Container(23):项目回顾与总结.mp4 23.84M
  • | | ├──35丨DIContainer(23):项目回顾与总结.html 4.07M
  • | | ├──35丨DIContainer(23):项目回顾与总结.m4a 3.39M
  • | | └──35丨DIContainer(23):项目回顾与总结.pdf 4.54M
  • └──05-实战项目三|RESTfulWebServices
  • | ├──36丨实战中的TDD:RESTfulWebServices
  • | | ├──36丨实战中的TDD:RESTfulWebServices(2).mp4 50.15M
  • | | ├──36丨实战中的TDD:RESTfulWebServices.html 1.59M
  • | | ├──36丨实战中的TDD:RESTfulWebServices.m4a 1.30M
  • | | ├──36丨实战中的TDD:RESTfulWebServices.mp4 15.69M
  • | | └──36丨实战中的TDD:RESTfulWebServices.pdf 1.41M
  • | ├──37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互
  • | | ├──37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互.html 3.10M
  • | | ├──37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互.m4a 4.16M
  • | | ├──37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互.mp4 84.88M
  • | | └──37丨RESTfulWebServices(1):明确架构愿景与架构组件间的交互.pdf 3.60M
  • | ├──38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?
  • | | ├──38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?.html 1.89M
  • | | ├──38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?.m4a 1.16M
  • | | ├──38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?.mp4 83.04M
  • | | └──38丨RESTfulWebServices(2):根据Spike的结果,要如何调整架构愿景?.pdf 1.70M
  • | ├──39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序
  • | | ├──39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序(1).mp4 24.77M
  • | | ├──39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序.html 3.16M
  • | | ├──39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序.m4a 1.22M
  • | | ├──39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序.mp4 70.01M
  • | | └──39丨RESTfulWebServices(3):明确架构愿景与调用栈顺序.pdf 2.52M
  • | ├──40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?
  • | | ├──40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?.html 4.60M
  • | | ├──40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?.m4a 3.34M
  • | | ├──40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?.mp4 56.59M
  • | | └──40丨RESTfulWebServices(4):在当前架构愿景下,要如何分解任务?.pdf 4.18M
  • | ├──41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?
  • | | ├──41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.html 3.62M
  • | | ├──41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.m4a 1.17M
  • | | ├──41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.mp4 86.02M
  • | | └──41丨RESTfulWebServices(5):如何通过对数据测试的管理来凸显意图?.pdf 3.25M
  • | ├──42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?
  • | | ├──42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.html 3.47M
  • | | ├──42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.m4a 918.83kb
  • | | ├──42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.mp4 74.07M
  • | | └──42丨RESTfulWebServices(6):如何处理JAX-RS定义的异常类?.pdf 3.00M
  • | ├──43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?
  • | | ├──43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.html 3.48M
  • | | ├──43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.m4a 755.47kb
  • | | ├──43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.mp4 57.64M
  • | | └──43丨RESTfulWebServices(7):剩下两个SadPath场景该如何处理?.pdf 3.05M
  • | ├──44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?
  • | | ├──44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.html 3.56M
  • | | ├──44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.m4a 1.10M
  • | | ├──44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.mp4 88.20M
  • | | └──44丨RESTfulWebServices(8):如何在现有代码的基础上构造测试?.pdf 2.80M
  • | ├──45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?
  • | | ├──45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.html 3.87M
  • | | ├──45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.m4a 1.09M
  • | | ├──45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.mp4 48.91M
  • | | └──45丨RESTfulWebServices(9):通过伦敦学派得到的测试风格是什么样的?.pdf 2.90M
  • | ├──46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?
  • | | ├──46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?.html 3.46M
  • | | ├──46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?.m4a 3.17M
  • | | └──46丨RESTfulWebServices(10):伦敦学派与经典学派的测试节奏有何不同?.pdf 3.65M
  • | ├──47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?
  • | | ├──47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.html 1.82M
  • | | ├──47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.m4a 1.19M
  • | | ├──47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.mp4 59.83M
  • | | └──47丨RESTfulWebServices(11):如何通过Spike来验证架构愿景?.pdf 1020.88kb
  • | ├──48丨RESTfulWebServices(12):如何调整接口和架构愿景?
  • | | ├──48丨RESTfulWebServices(12):如何调整接口和架构愿景?.html 1.87M
  • | | ├──48丨RESTfulWebServices(12):如何调整接口和架构愿景?.m4a 1.09M
  • | | ├──48丨RESTfulWebServices(12):如何调整接口和架构愿景?.mp4 60.89M
  • | | └──48丨RESTfulWebServices(12):如何调整接口和架构愿景?.pdf 1.33M
  • | ├──49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?
  • | | ├──49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.html 2.06M
  • | | ├──49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.m4a 1.40M
  • | | ├──49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.mp4 58.11M
  • | | └──49丨RESTfulWebService(13):如何SpikeSub-ResourceLocator?.pdf 1.21M
  • | ├──50|RESTful Web Services(14):分解任务与Setup测试
  • | | ├──50|RESTful Web Services(14):分解任务与Setup测试.mp4 57.23M
  • | | ├──50丨RESTfulWebServices(14):分解任务与Setup测试.html 2.80M
  • | | ├──50丨RESTfulWebServices(14):分解任务与Setup测试.m4a 992.18kb
  • | | └──50丨RESTfulWebServices(14):分解任务与Setup测试.pdf 1.93M
  • | ├──51|RESTful Web Services(15):为什么选择在第一个测试之后就开始重构?
  • | | ├──51|RESTful Web Services(15):为什么选择在第一个测试之后就开始重构?.mp4 57.57M
  • | | ├──51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.html 2.93M
  • | | ├──51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.m4a 1.02M
  • | | └──51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.pdf 2.34M
  • | ├──52|RESTful Web Services(16):重构手法之设计方法名的名称
  • | | ├──52|RESTful Web Services(16):重构手法之设计方法名的名称.mp4 54.21M
  • | | ├──52丨RESTfulWebServices(16):重构手法之设计方法名的名称.html 3.06M
  • | | ├──52丨RESTfulWebServices(16):重构手法之设计方法名的名称.m4a 1.09M
  • | | └──52丨RESTfulWebServices(16):重构手法之设计方法名的名称.pdf 2.88M
  • | ├──53|RESTful Web Services(17):如何进行Spike的架构愿景细化?
  • | | ├──53|RESTful Web Services(17):如何进行Spike的架构愿景细化?.mp4 53.04M
  • | | ├──53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.html 2.90M
  • | | ├──53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.m4a 836.48kb
  • | | └──53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.pdf 2.61M
  • | ├──54|RESTful Web Services(18):如何实现UriTemplate的主要功能?
  • | | ├──54|RESTful Web Services(18):如何实现UriTemplate的主要功能?.mp4 59.38M
  • | | ├──54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.html 2.98M
  • | | ├──54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.m4a 1.04M
  • | | └──54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.pdf 2.38M
  • | ├──55|RESTful Web Services(19):如何更有效地构造测试数据?
  • | | ├──55|RESTful Web Services(19):如何更有效地构造测试数据?.mp4 60.86M
  • | | ├──55丨RESTfulWebServices(19):如何更有效地构造测试数据?.html 3.07M
  • | | ├──55丨RESTfulWebServices(19):如何更有效地构造测试数据?.m4a 918.33kb
  • | | └──55丨RESTfulWebServices(19):如何更有效地构造测试数据?.pdf 2.30M
  • | ├──56|RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构?
  • | | ├──56|RESTful Web Services(20):为什么要通过测试的方法来驱动出代码结构?.mp4 55.58M
  • | | ├──56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.html 2.74M
  • | | ├──56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.m4a 1.11M
  • | | └──56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.pdf 2.24M
  • | ├──57|RESTful Web Services(21):按照三角法,该如何增加新的测试案例?
  • | | ├──57|RESTful Web Services(21):按照三角法,该如何增加新的测试案例?.mp4 76.29M
  • | | ├──57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.html 3.01M
  • | | ├──57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.m4a 1.15M
  • | | └──57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.pdf 2.20M
  • | ├──58|RESTful Web Services(22):重构还是继续完成功能?
  • | | ├──58|RESTful Web Services(22):重构还是继续完成功能?.mp4 55.57M
  • | | ├──58丨RESTfulWebServices(22):重构还是继续完成功能?.html 3.39M
  • | | ├──58丨RESTfulWebServices(22):重构还是继续完成功能?.m4a 1.35M
  • | | └──58丨RESTfulWebServices(22):重构还是继续完成功能?.pdf 2.83M
  • | ├──59|RESTful Web Services(23):如何构造测试数据?
  • | | ├──59|RESTful Web Services(23):如何构造测试数据?.mp4 76.50M
  • | | ├──59丨RESTfulWebServices(23):如何构造测试数据?.html 2.97M
  • | | ├──59丨RESTfulWebServices(23):如何构造测试数据?.m4a 912.03kb
  • | | └──59丨RESTfulWebServices(23):如何构造测试数据?.pdf 2.43M
  • | ├──60|RESTful Web Services(24):RootResource的测试要如何改造?
  • | | ├──60|RESTful Web Services(24):RootResource的测试要如何改造?.mp4 71.14M
  • | | ├──60丨RESTfulWebServices(24):RootResource的测试要如何改造?.html 2.84M
  • | | ├──60丨RESTfulWebServices(24):RootResource的测试要如何改造?.m4a 904.92kb
  • | | └──60丨RESTfulWebServices(24):RootResource的测试要如何改造?.pdf 1.55M
  • | ├──61|RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构?
  • | | ├──61 |RESTful Web Services(25):如何重构DefaultResourceRouter中的Result结构?.mp4 58.11M
  • | | ├──61丨RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?.html 3.29M
  • | | ├──61丨RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?.m4a 939.88kb
  • | | └──61丨RESTfulWebServices(25):如何重构DefaultResourceRouter中的Result结构?.pdf 2.46M
  • | ├──62|RESTful Web Services(26):如何继续划分ResourceLocator的任务?
  • | | ├──62|RESTful Web Services(26):如何继续划分ResourceLocator的任务?.mp4 62.24M
  • | | ├──62丨RESTfulWebServices(26):如何继续划分ResourceLocator的任务?.html 3.35M
  • | | ├──62丨RESTfulWebServices(26):如何继续划分ResourceLocator的任务?.m4a 1.35M
  • | | └──62丨RESTfulWebServices(26):如何继续划分ResourceLocator的任务?.pdf 2.77M
  • | ├──63|RESTful Web Services(27):如何通过重构修改接口?
  • | | ├──63|RESTful Web Services(27):如何通过重构修改接口?.mp4 66.22M
  • | | ├──63丨RESTfulWebServices(27):如何通过重构修改接口?.html 3.30M
  • | | ├──63丨RESTfulWebServices(27):如何通过重构修改接口?.m4a 1.33M
  • | | └──63丨RESTfulWebServices(27):如何通过重构修改接口?.pdf 2.91M
  • | ├──64|RESTful Web Services(28):如何重构Resource、SubResource等接口与实现?
  • | | ├──64|RESTful Web Services(28):如何重构Resource、SubResource等接口与实现?.mp4 98.36M
  • | | ├──64丨RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?.html 3.26M
  • | | ├──64丨RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?.m4a 984.34kb
  • | | └──64丨RESTfulWebServices(28):如何重构Resource、SubResource等接口与实现?.pdf 1.77M
  • | ├──65|RESTful Web Services(29):后续任务将要如何划分与实现?
  • | | ├──65|RESTful Web Services(29):后续任务将要如何划分与实现?.mp4 50.81M
  • | | ├──65丨RESTfulWebServices(29):后续任务将要如何划分与实现?.html 3.18M
  • | | ├──65丨RESTfulWebServices(29):后续任务将要如何划分与实现?.m4a 1.21M
  • | | └──65丨RESTfulWebServices(29):后续任务将要如何划分与实现?.pdf 2.27M
  • | ├──66|RESTful Web Services(30):什么情况下应该使用行为验证?
  • | | ├──66|RESTful Web Services(30):什么情况下应该使用行为验证?.mp4 41.99M
  • | | ├──66丨RESTfulWebServices(30):什么情况下应该使用行为验证?.html 3.14M
  • | | ├──66丨RESTfulWebServices(30):什么情况下应该使用行为验证?.m4a 1.21M
  • | | └──66丨RESTfulWebServices(30):什么情况下应该使用行为验证?.pdf 2.47M
  • | ├──67|RESTful Web Services(31):对于option的测试策略应该是怎样的
  • | | ├──67|RESTful Web Services(31):对于option的测试策略应该是怎样的.mp4 52.03M
  • | | ├──67丨RESTfulWebServices(31):对于option的测试策略应该是怎样的.html 3.29M
  • | | ├──67丨RESTfulWebServices(31):对于option的测试策略应该是怎样的.m4a 1.19M
  • | | └──67丨RESTfulWebServices(31):对于option的测试策略应该是怎样的.pdf 2.15M
  • | ├──50丨RESTfulWebServices(14):分解任务与Setup测试.html 2.80M
  • | ├──50丨RESTfulWebServices(14):分解任务与Setup测试.m4a 992.18kb
  • | ├──50丨RESTfulWebServices(14):分解任务与Setup测试.pdf 1.92M
  • | ├──51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.html 2.92M
  • | ├──51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.m4a 1.02M
  • | ├──51丨RESTfulWebServices(15):为什么选择在第一个测试之后就开始重构?.pdf 2.31M
  • | ├──52丨RESTfulWebServices(16):重构手法之设计方法名的名称.html 3.06M
  • | ├──52丨RESTfulWebServices(16):重构手法之设计方法名的名称.m4a 1.09M
  • | ├──52丨RESTfulWebServices(16):重构手法之设计方法名的名称.pdf 2.88M
  • | ├──53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.html 2.89M
  • | ├──53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.m4a 836.48kb
  • | ├──53丨RESTfulWebServices(17):如何进行Spike的架构愿景细化?.pdf 2.51M
  • | ├──54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.html 2.08M
  • | ├──54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.m4a 1.04M
  • | ├──54丨RESTfulWebServices(18):如何实现UriTemplate的主要功能?.pdf 2.37M
  • | ├──55丨RESTfulWebServices(19):如何更有效地构造测试数据?.html 2.99M
  • | ├──55丨RESTfulWebServices(19):如何更有效地构造测试数据?.m4a 918.33kb
  • | ├──55丨RESTfulWebServices(19):如何更有效地构造测试数据?.pdf 2.29M
  • | ├──56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.html 2.66M
  • | ├──56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.m4a 1.11M
  • | ├──56丨RESTfulWebServices(20):为什么要通过测试的方法来驱动出代码结构?.pdf 2.21M
  • | ├──57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.html 2.93M
  • | ├──57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.m4a 110.93kb
  • | ├──57丨RESTfulWebServices(21):按照三角法,该如何增加新的测试案例?.pdf 2.19M
  • | ├──58丨RESTfulWebServices(22):重构还是继续完成功能?.html 3.32M
  • | ├──58丨RESTfulWebServices(22):重构还是继续完成功能?.m4a 1.35M
  • | └──58丨RESTfulWebServices(22):重构还是继续完成功能?.pdf 2.79M

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源