我正在学习 TDD,但很难采用它,因为它并不简单。
我无法回答的问题是“如何在任何实现代码存在之前编写测试?”。
如果我们的目标类/目标方法/目标参数类型/目标返回类型不存在,
- 在测试中编写代码时我们指的是什么。我们如何开始编写测试?
- 如果我们能写的只是实际实现代码之前的测试方法名称,测试怎么会失败?
每个人都说为什么而不是如何
我已尽我所能找到详细说明在生产代码之前编写测试的资源,但假设我错过了好的资源,其中大部分都充满了陈词滥调 解释为什么 TTD 比专注于采用它的实践更重要。
一个示例用例。
假设我们正在为一所大学开发软件,我们的用例是类(class)注册。
为了简单起见,让我们把这个讨论限制在
- 场景:“一个学生每学期最多可以注册任意 3 门类(class)”
- 测试服务层和dao层。
伪代码
ENROLL(studentId, courseId)
//check if student enrolled in less than 3 courses in the same semester as given courseId belongs in.
//if yes, enroll him/her.
//if not, return an error.
上面的实际实现可能跨越几个涉及服务、daos 等的类。
请您解释一下如何逐步测试驱动开发它?如果你要使用 TDD 来实现它,你是如何一步一步地做到的。
我希望这可以帮助将来像我这样的许多斗争。
最佳答案
在 src/test/java 和 EnrollingService 同一个包中创建 EnrollingServiceTest 类
class EnrollingServiceTest {
private EnrollingService enrollingService;
@Before
public void init() {
enrollingService = new EnrollingService();
}
@Test
public void testEnroll() {
boolean result = enrollingService.enroll(1l, 1l);
assertTrue(result);
...
IDE(我假设您使用的是 IDE)显示错误 - EnrollingService 不存在。
EnrollService 上的光标点 - IDE 将提供创建一个类 - 让它在 src/main/java 中创建
现在 IDE 说缺少enroll(long, long) 方法 - 让 IDE 为您创建它。
现在 IDE 没有显示错误。运行测试 - 它失败了。去注册,开始实现逻辑
等等……
关于java - 测试驱动开发 - 如何在不存在任何实现代码之前编写测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20768738/