unit-testing - 单元测试:在设置方法中使用断言是一种好习惯吗?

标签 unit-testing refactoring fixtures assertions

在单元测试中,设置方法用于创建测试所需的对象。

在那些设置方法中,我喜欢使用断言:我知道我想要在那些值中看到什么值
对象,我喜欢通过断言来记录这些知识。

在有关unit tests calling other unit tests的最新文章中(这里关于stackoverflow),总体感觉似乎是单元测试不应调用其他测试:
该问题的答案似乎是您应该重构设置,因此
测试用例不相互依赖。

但是,“带有声明的设置”和“
单元测试调用其他单元测试。

因此,我的问题是:在设置方法中使用断言是一种好习惯吗?

编辑:

答案是:一般来说,这不是一个好习惯。如果需要测试设置结果,建议添加带有断言的单独测试方法(我勾选的答案);要记录意图,请考虑使用Java断言。

最佳答案

我没有使用设置中的断言来检查结果,而是使用(简单的测试方法)(一种与其他方法一起使用的测试方法,但定位为第一种测试方法)。

我看到了几个优点:

  • 设置简短易读,以提高可读性。
  • 断言仅运行一次,这比更有效


  • 用法和讨论:

    例如,我将方法命名为testSetup()。

    要使用它,当我在该类中遇到一些测试错误时,我知道如果testSetup()出现错误,则无需打扰其他错误,我需要先解决此问题。

    如果有人对此感到不安,并且想使此依赖关系明确,则可以在setup()方法中调用testSetup()。但我认为这并不重要。我的意思是,在JUnit中,其余测试中已经可以有类似的东西:
  • 一些测试本地代码
  • 的测试
  • 和一些调用更多全局代码的测试,这些测试间接调用与先前测试相同的代码。

  • 当您读取两个都失败的测试结果时,您已经必须照顾不在测试中的依赖项,而是要在称为的代码中。您必须先修复简单测试,然后重新运行全局测试以查看其是否仍然失败。
    这就是为什么我不被前面解释的隐式依赖所困扰的原因。

    关于unit-testing - 单元测试:在设置方法中使用断言是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371940/

    相关文章:

    Git 功能分支和次要代码改进

    unit-testing - 设置/拆卸会损害测试的可维护性吗?

    java - JMockit - 意外调用

    c++ - C++ 中的模拟和依赖注入(inject)

    python - Django 测试数据库不返回任何内容

    unit-testing - 多次运行 NUnit 测试

    java - 嵌套 'synchronize' : How can this synchronized Java method be refactored - and could it make any sense like this?

    javascript - 是否可以重构普通 JS DOM 操作

    Django 转移到 PostgreSQL 无法导入固定装置,说明数据太长

    python - pytest fixture 没有在类里面被调用