java - 测试驱动开发 - 如何在不存在任何实现代码之前编写测试

标签 java unit-testing junit tdd

我正在学习 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/

相关文章:

java - GC 静态对象引用为 null

javascript - 在 Brunch.io 中,我们如何运行测试

Controller 休息服务的 Spring Junit 测试用例

maven - 如何在 Maven 依赖项中使用 JUnit 5.2 BOM?

java - 为什么我的第一个 Activity 没有显示?

java - 如何模拟 ApplicationContext context = getContext(); HttpSecurity 以防止以下测试用例中的 nullPointer 异常

java - Swing Nimbus 更改不可编辑 JTextField 的样式

unit-testing - 需要 TCP/IP 服务器模拟/ stub 软件

java - 这种方法的测试用例是什么?

java - JUnit 测试 - 断言逻辑