SimpleTest 与 PHPunit

2023-12-25

我想知道是否有任何在这方面有经验的人可以解释一下重要的两者之间有什么区别吗?

每种方法有什么特定的优势使其适用于任何特定情况吗?


这个问题已经过时了,但由于它仍然有流量和答案,尽管我在这里再次陈述我的观点,但我已经在其他一些(较新的)问题上做到了这一点。

I'm 真的真的SimpleTest 感到困惑still被认为是 phpunit 的替代品。也许我只是被误导了,但据我所知:

  • PHPUnit 是标准;大多数框架都使用它(例如 Zend Framework (1&2)、Cake、Agavi,甚至 Symfony 也在 Symfony 2 for phpunit 中放弃了自己的框架)。
  • PHPUnit 集成在每个 PHP IDE(Eclipse、Netbeans、Zend Stuide、PHPStorm)中并且运行良好。
  • Simpletest 有一个针对 PHP 5.1(又名旧版本)的 eclipse 扩展,仅此而已。
  • PHPUnit 可以与每个持续集成服务器很好地配合,因为它输出代码覆盖率和测试报告的所有标准日志文件。
  • Simpletest 没有。虽然这在一开始并不是一个大问题,但一旦你停止“只是测试”并开始开发软件,它就会给你带来很大的麻烦(是的,这个说法是挑衅性的:)不要太认真)。
  • PHPUnit 得到积极维护、稳定,并且适用于每个代码库、每个场景以及您想要编写测试的每种方式。
  • (主观)PHPUnit 提供了更好的 http://www.phpunit.de/manual/3.6/en/code-coverage-analysis.html代码覆盖率报告比简单测试 http://www.simpletest.org/en/reporter_documentation.html
  • 使用 PHPUnit,您还可以在 IDE 中获取这些报告(Netbeans http://netbeans.org/kb/docs/php/phpunit.htm%60、日食、...)
  • 另外还有一些建议web interface to phpunit tests https://stackoverflow.com/questions/2424457/web-interface-to-phpunit-tests.

我还没有看到任何支持 SimpleTest 的论据。安装起来并不简单,因为 PHPUnit 可以通过 pear 获得:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

和“第一次测试”看起来几乎一样。

As of PHPUnit 3.7 it's 更容易安装只需使用PHAR Archive http://www.phpunit.de/manual/current/en/installation.html#installation.phar

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

或仅适用于Windows下载 http://pear.phpunit.de/get/phpunit.pharPhar 和运行:

php phpunit-.phar

或者当使用支持的作曲家安装 http://www.phpunit.de/manual/current/en/installation.html#installation.composer像这样的方式

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

到你的composer.json。


对于您想要测试的所有内容,PHPUnit 都会有一个解决方案,您几乎可以在任何地方找到帮助(所以,freenode 上的 #phpunit irc 频道,几乎每个 php 开发人员都可以找到;))

如果我说错或者忘记了什么,请纠正我:)

PHP 测试工具概述

Video: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/ http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

Slides: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011 http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

它提到了类似的东西Atoum https://github.com/mageekguy/atoum它自称:“一个简单、现代、直观的 PHP 单元测试框架!”


全面披露

我最初是在 2011 年 1 月写下这个答案的,当时我与任何 PHP 测试项目没有任何关系。从那时起我就成为了 PHPUnit 的贡献者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SimpleTest 与 PHPunit 的相关文章

  • mysqli_real_escape_string 无法正常工作

    我已经搜索过 但我发现似乎没有任何效果 我的问题是 当使用特殊字符作为 输入查询会中断 现在 我尝试在字符串上使用 mysqli real escape string 但这会返回一个空白值 我读到 mysqli real escape st
  • php-curl 不支持 url 中的 utf-8

    我正在尝试将 http 请求从我的服务器发送到 php 中的另一台服务器 例如 我发送请求的 URL 包含一些 utf8 字符http www aparat com etc api videoBySearch text http www a
  • 如何在Vue3中对setup的内部函数(不是返回)进行单元测试?

    我想这样测试 情况1 错误 无法监视内部属性 因为它不是函数 改为未定义 组件 vue export default setup function outer inner function inner do something for on
  • CodeIgniter 中的 base_url() 和 403 错误

    在 HTML 视图中 css 链接代码如下所示 但我的浏览器显示的地址具有双域地址 www jedendzien pl www jedendzien pl assets css style css 所以我收到 403 错误 我通过以下方式创
  • PHP 数组的最大键大小是多少?

    我正在生成关联数组 键值是 1 n 列的字符串连接 会回来咬我的钥匙有最大长度吗 如果是这样 我可能会停下来并采取不同的做法 它似乎仅受脚本内存限制的限制 快速测试后我得到了 128mb 的密钥 没问题 ini set memory lim
  • ruby 中可以做动态变量吗? [复制]

    这个问题在这里已经有答案了 我可以通过其他方式实现这种动态性质 但这引起了我的好奇 Ruby 中有类似的机制吗 varname hello varname world echo hello Output world 您可以使用以下方法实现类
  • PHP,检查 URL 和文件是否存在?

    我为 WordPress 创建了一个插件 需要存在两个文件才能正常运行 第一个文件定义为文件系统路径 第二个文件定义为 URL 假设第一个文件是 home my site public html some folder required f
  • 正则表达式匹配 2 个或更多单词

    我有一个正则表达式尝试匹配 2 个或更多单词 但它没有按预期工作 我究竟做错了什么 string i dont know do you know preg match a z b 2 string match echo pre print
  • Laravel“未定义方法 Illuminate\Database\Query\Builder::attach()”

    我正在尝试在 Laravel 4 中的数据库播种期间关联相关模型 根据文档here http laravel com docs eloquent inserting related models 我可以这样做 user gt roles g
  • XAMPP 中的根路径

    我遇到这个问题已经有一段时间了 并且广泛寻找答案但没有成功 img src images test jpg 从 根路径 在我的例子中是在 LAMP 中的生产中 获取图像 htdocs images test jpg 无论是从 htdocs
  • 选择 MYSQL 行,但将行转换为列,将列转换为行

    我想选择数据库中的所有行 但我希望它们按相反的顺序排列 意思是 我想使用第一列数据作为新实体 并将实体作为第一列 我想你明白我的意思 这是一个例子 id name marks 1 Ram 45 2 Shyam 87 to id 1 2 Na
  • 将 PHP 错误存储在日志文件中

    我想将 php 生成的任何错误和警告存储在日志文件中 但是still也以正常方式显示它们 回显 Thanks 您可以定义自己的函数并描述如何处理错误 http www php net manual en function set error
  • 通过 wp_handle_upload 删除未放入上传文件夹中的图像

    我正在将图像保存到上传文件夹 但我正在使用文件放置内容 http php net manual en function file put contents php代替wp 句柄 上传 https codex wordpress org Fu
  • Laravel - JWT Auth 无法从请求中解析令牌

    我在中间件中添加了以下代码以进行用户身份验证JWT Auth https github com tymondesigns jwt auth 它适用于中间件处理的所有路由 public function handle request Clos
  • PHP file_get_contents() 和设置请求标头

    使用 PHP 是否可以发送 HTTP 标头file get contents 我知道您可以从您的php ini文件 但是 您是否还可以发送其他信息 例如HTTP ACCEPT HTTP ACCEPT LANGUAGE and HTTP CO
  • (mysql, php) 如何在插入数据之前获取auto_increment字段值?

    我正在将图像文件上传到存储服务器 在上传之前 我应该编写文件名 其中包含自动增量值 例如 12345 filename jpg 在插入数据库之前如何获取自动增量值 我只看到一种解决方案 插入空行 获取其自增值 删除这一行 使用 p 1 中的
  • 从php字符串中删除奇怪的字符

    这就是我现在所拥有的 将 RSS feed 绘制到 php 中 RSS feed 中的原始 xml 如下所示 Paul 8217 s Confidence 到目前为止我拥有的 php 是这样的 newtitle item gt title
  • 不返回值的方法的起订量调用库(void 方法)

    我正在尝试模拟正在测试的类 以便在测试它们时可以对各个方法进行调用 这将允许我仅将方法设置测试为调用库 并且从测试方法中调用的所有其他方法 同一类 都将被模拟 但是 对于不返回值的方法 我无法执行此操作 对于不返回值的方法 智能感知只是不显
  • 使用 foreach 进行复杂的多维关联数组处理

    我不得不再次问这个问题 抱歉 但我在尝试处理这个数组时遇到了问题 我尝试了几种不同的方法 但没有一个是正确的 这是数组 Array search gt Array response gt Array errors gt number of
  • 手动检查 php 中的 jpeg 文件结尾标记 ffd9 (?) 以捕获截断错误

    基本上是尝试从集合中删除损坏的 过早结束的 jpeg 文件 我认为如果文件末尾标记不存在 则意味着图像被截断 因此我认为它对我的目的无效 这是检查声音的方法吗 如果是的话 我有什么想法可以在 php 中实现这个吗 cheers 尝试这个 j

随机推荐

  • 在 spring mvc 中使用 thymeleaf 引用 .css 文件

    我正在用 spring MVC 和 Thymeleaf 做一个项目 我有一个问题 如果我有这个文件夹结构 我应该如何引用我的 CSS 文件 src main webapp resources myCssFolder myCssFile cs
  • Java 中的多个布局管理器

    有没有办法在Java中使用超过1个布局管理器 现在我正在使用 gridLayout 来实现棋盘 但在它下面我想放置一些其他东西 但不在 gridLayout 中 也许是 FlowLayout 或其他一些布局 我该怎么做呢 谢谢 是的 您所需
  • 如何将共享首选项从即时应用程序转移到完整应用程序

    我知道我们可以使用 Google Instant 的存储 api 将数据从即时应用程序传输到完整应用程序 如上所述here https developers google com android reference com google a
  • “使用作用域服务时,将服务注入 Invoke 或 InvokeAsync”是什么意思?

    我正在阅读有关 Net Core 中的 DI 的 MS 文档 https learn microsoft com en us aspnet core fundamentals dependency injection view aspnet
  • 在 PowerShell 脚本中访问 Windows 任务凭据

    我需要使用 Windows 任务计划程序自动运行 PowerShell 脚本 我的问题是 在我的 PS 脚本中 我需要将我的凭据发送到 Web 服务 我不想在文件中写入我的凭据 因为它是纯文本并且其他人可以轻松访问 我可以让我的脚本访问我在
  • Drupal 搜索引擎不索引我的自定义节点!

    大约一个小时前 有人发布了一个关于 drupal 搜索引擎的问题 内容如下 我知道 drupal 应该对返回的任何内容进行索引node view 但我的自定义内容不会发生这种情况 另外 Drupal 内置功能是否有更好的替代方案 由于问题在
  • 从两个表中选择时如何按日期获取最新结果?

    我有两个表 我想加入一个查询 result保存实际输入的结果 user tracking跟踪工作的接受和完成情况 用户可以取消并稍后再次接受工作 SELECT from svr1 result r svr1 user tracking u
  • 编写可访问 Django 数据库功能的 Python 程序的最简单方法

    我有一个网站 它定期从 RSS 提要中获取信息 目前是手动获取 这是我的问题 目前 这是作为普通的 Django 视图实现的 在我看来这不是很好 我想要一个使用 cronjob 运行的 Python 程序 而不是手动访问正确的 URL 来更
  • Django Admin - 如何防止删除某些内联

    我有 2 个模型 例如 Book 和 Page Page 有一个 Book 的外键 每个页面都可以标记为 was read 布尔值 我想防止删除已读取的页面 在管理中 在管理中 页面是书中的内联 我不希望页面成为管理中的独立模型 我的问题
  • ScheduledExecutorService 在正常 OS / JVM 上的准确性

    I use ScheduledExecutorService scheduleAtFixedRate运行日常任务 如下所示 executor scheduleAtFixedRate task d 24L 3600 1000 TimeUnit
  • 一般从实体框架返回一个项目

    我遇到过这样的情况 网站可以根据字符串从我的数据库中请求数据 不用担心 我正在防止 SQL 注入 出于各种原因 我希望有一个方法可以返回用户期望的对象 从 EF 最终通过部分页面返回 我在想这样的事情 public
  • 如何在 Qt Creator 中“在 malloc_error_break 中设置断点进行调试”?

    当我点击关闭窗口返回时 我的 Qt5 应用程序崩溃了 MyApp 28741 0x7fff7aa73000 malloc error for object 0x7fc40bc8e300 pointer being freed was not
  • Java 成员枚举类型应该大写吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这里有个问题 我们有 Java 枚举 它们是它们自己的类 而枚举是类的成员 public enum reportType 每次我看到这个都会让我
  • Kafka主题创建:等待节点分配超时

    我有一个本地 Kafka 使用以下命令运行docker compose yml file version 2 services zookeeper image confluentinc cp zookeeper 5 0 1 environm
  • WebGL 与 openGL 中的着色器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想使用着色器在 WebGL 中使用 特别是在 Three js 中 WebGL 和 Three js
  • EcsService 下班后不稳定

    我从头开始编写了一个 cloudformation JSON 文件 但我无法部署堆栈 并且我没有从 AWS 获得任何关于原因的信息 它卡在服务中CREATE IN PROGRESS4 5 小时 然后它说该服务did not stabiliz
  • sailsjs 数组查询 精确匹配

    我想在 sailsjs 中查询 mongodb 这是我的数据库的结构 users 52ed09e1d015533c124015d5 52ed4bc75ece1fb013fed7f5 user msgs sender 52ed09e1d015
  • 如何在stable/prometheus图表values.yaml中设置prometheus规则?

    使用官方Prometheus chart stable prometheus 定制其values yaml要设置的文件alertmanager yml文件和serverFiles area At rules https github com
  • 大型多CPU系统上的快速进程间(线程间)通信IPC

    对于进程间通信来说 最快的可移植双向通信机制是什么 其中一个应用程序的线程需要与同一台计算机上另一个应用程序中的多个线程通信 并且通信线程可以位于不同的物理 CPU 上 我假设它将涉及共享内存和循环缓冲区以及共享同步机制 但是 当线程在不同
  • SimpleTest 与 PHPunit

    我想知道是否有任何在这方面有经验的人可以解释一下重要的两者之间有什么区别吗 每种方法有什么特定的优势使其适用于任何特定情况吗 这个问题已经过时了 但由于它仍然有流量和答案 尽管我在这里再次陈述我的观点 但我已经在其他一些 较新的 问题上做到