unit-testing - 你把单元测试放在哪里?

标签 unit-testing

我在一个项目中发现了几个内务单元测试的约定,并且
我不确定哪种方法适合我们的下一个 PHP 项目。我是
试图找到最好的约定来鼓励简单的开发和
查看源代码时测试的可访问性。我会很
对您对以下各项的经验/意见感兴趣:

  • 一个文件夹用于生产代码,另一个用于单元测试:这将分开
    来自项目逻辑文件的单元测试。这种分离
    顾虑既是麻烦又是优势:有人正在调查
    该项目的源代码将 - 所以我想 - 要么浏览
    实现或单元测试(或更常见的是:实现
    只要)。单元测试的优势是您的类的另一个观点
    丢失了-这两个观点与 IMO 相差太远。
  • 带注释的测试方法:我知道的任何现代单元测试框架都允许
    开发人员创建专用的测试方法,注释它们(@test)和
    将它们嵌入到项目代码中。我在这里看到的最大缺点是
    项目文件变得困惑。即使将这些方法分开
    使用注释标题(如该行下方的单元测试)它只会膨胀
    不必要地上课。
  • 与实现文件位于同一文件夹中的测试文件:我们的文件
    命名约定规定 PHP 文件包含类(一个类
    每个文件)应该以 .class.php 结尾。我可以想象推杆单元
    将一个类文件测试到另一个以 .test.php 结尾的文件中
    将测试更多地呈现给其他开发人员而不会污染
    类。虽然它使项目文件夹膨胀,而不是
    实现文件,这是我迄今为止最喜欢的,但我有我的疑虑:我
    会认为其他人已经提出了这个,并丢弃了这个
    出于某种原因的选项(即我还没有看到带有文件的 java 项目
    Foo.java 和 FooTest.java 在同一文件夹中。)也许是因为
    Java 开发人员更多地使用 IDE,这让他们更容易访问
    测试,而在 PHP 中没有出现大型编辑器(例如 eclipse for
    java) - 我认识的许多开发人员都使用 vim/emacs 或类似的编辑器
    支持 PHP 开发本身。

  • 您对这些单元测试位置的体验如何?你有
    我没有在这里列出的另一个约定?或者我只是高估了单元测试
    审稿人的可访问性?

    最佳答案

    我喜欢将单元测试保存在与生产代码 (#3) 相同的目录中的单独源文件中。

    单元测试不是二等公民,它们的代码必须像生产代码一样维护和重构。如果您将单元测试保存在单独的目录中,下一个更改您的生产代码的开发人员可能会错过它有单元测试并且无法维护测试。

    在 C++ 中,我倾向于每个类有三个文件:

    MyClass.h
    MyClass.cpp
    t_MyClass.cpp
    

    如果你使用 Vim,那么我的 toggle_unit_tests用于在源文件和单元测试文件之间切换的插件可能很有用。

    关于unit-testing - 你把单元测试放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843795/

    相关文章:

    c# - 使用 Moq 模拟 Fluent 界面

    javascript - 如何为需要测试其发射的 Angular Directive(指令)进行 Jasmine 单元测试?

    javascript - 如何对与 DOM 元素交互的 Javascript 代码进行单元测试

    unit-testing - phpunit laravel 5.4 错误

    C# + N单元 : Unit testing methods with byte array arguments

    python - 如何从 "python setup.py test"运行 unittest discover ?

    java - 模拟在测试方法内创建的返回值(这是一个对象)

    silverlight - 在 TFS 2010 版本中运行 Silverlight 单元测试

    java - 如何在一个 Eclipse 项目中为另一个 Eclipse 项目中的类编写测试?

    unit-testing - 测试不工作 CakePHP2.0