Unit testing 有人能从测试驱动开发的角度解释JUnit测试吗?

Unit testing 有人能从测试驱动开发的角度解释JUnit测试吗?,unit-testing,junit,Unit Testing,Junit,我得到了一个只有方法头和签名的类的家庭作业,没有主体 其中一个要求是通过为每个方法编写Junit测试来使用测试驱动的开发过程 根据我在TDD方面对单元测试的理解,您希望首先编写失败的测试,然后实现通过测试的代码 然而,这是否意味着一旦创建了失败的测试,就不再修改这些测试,而是只修改代码以使测试通过 我这样问是因为如果我编写了一个导致编译错误的测试,会发生什么 例如,在代码中,有一个构造函数有3个参数,其主体为空,即没有初始化变量 我想为构造函数编写一个测试,其中包含不同的数据类型,然后在参数中进

我得到了一个只有方法头和签名的类的家庭作业,没有主体

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

根据我在TDD方面对单元测试的理解,您希望首先编写失败的测试,然后实现通过测试的代码

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

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

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

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

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


谢谢

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

我是TDD的坚定支持者,但我相信编写一个不编译的测试不会提供太多价值

我执行TDD的方法如下:

  • 定义所需的方法签名
  • 编写一个编译测试方法来调用被测试的方法
  • 断言被测试方法的功能
  • 这应该失败,因为该方法没有任何功能
  • 运行测试并验证它是否按预期失败
  • 实现代码以满足验证要求
  • 运行测试并验证其通过
  • 接下来,您可以向同一测试添加其他验证,或者针对同一方法或下一方法编写新测试


    在单元测试中,您可以在单个测试中验证多个内容,但不应多次调用测试中的方法。也就是说,如果被测试的方法执行了5个可验证的操作,您可以验证同一测试中的所有操作,前提是您可以这样做,而无需多次调用该方法。

    请显示代码和您考虑的测试。我不明白你的意思。