有人可以用测试驱动开发来解释JUnit测试吗?

时间:2013-11-01 03:56:24

标签: unit-testing junit

我得到了一个只有方法标题和签名的课程作业,没有正文。

我的一个要求是通过为每种方法编写Junit测试来使用测试驱动开发过程。

根据我对TDD单元测试的理解,你想首先编写FAIL测试,然后实现通过测试的代码。

但是,这是否意味着一旦你创建了失败的测试,你就不能再修改那些测试,而只修改代码以使测试通过?

我问这个,因为如果我编写一个导致编译错误的测试会发生什么?

例如,在代码中,有一个构造函数,其中3个参数为空体,即没有变量初始化。

我想为包含不同数据类型的构造函数编写测试,然后在参数中使其失败。但这会导致编译错误,因此,当我实现代码并初始化变量时,由于数据类型不正确,测试将失败。

在这种情况下,JUnit测试如何在TDD方面起作用?

谢谢!

2 个答案:

答案 0 :(得分:1)

我是TDD的忠实拥护者,但我相信编写一个不编译的测试并不能提供太多价值。

我做TDD的方式如下:

  1. 定义所需的方法签名
  2. 编写一个调用测试方法的编译测试方法
  3. 断言测试方法的功能
    1. 这应该会失败,因为该方法没有任何功能
  4. 运行测试并验证其是否按预期失败
  5. 实施代码以满足验证
  6. 运行测试并验证通过
  7. 接下来,您可以在同一个测试中添加额外的验证,或者针对相同的方法或下一个方法编写新的测试。

    在单元测试中,您可以在单个测试中验证多个内容,但是您不应多次调用测试中的方法。即。如果测试中的方法执行5个可验证的操作,则可以在不多次调用该方法的情况下验证同一测试中的所有操作。

答案 1 :(得分:0)

测试应该测试代码的功能。例如。 Calculater.sum(a,b)计算总和。它不应该测试Java语言(例如构造函数匹配,存在方法,......)