monomelodies / gentry
Requires
- php: >=7
- jonnyw/php-phantomjs: 4.*
- monomelodies/dabble: ^1.5
- monomelodies/kingconf: ^1.0
- psr/cache: ^1.0
- simoneast/simple-ansi-colors: ^1.0
- zeptech/annotations: ^1.0.0
- dev-master
- 0.9.0
- 0.8.5
- 0.8.4
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.7
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.9
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-develop
- dev-testing-framework
This package is auto-updated.
Last update: 2022-02-01 13:14:40 UTC
README
PHP7+ 的测试框架
好的程序员都很懒惰,但不幸的是,这也意味着像编写测试(无聊)这样的东西经常被跳过。请不要这样做;它很重要,一旦实施就非常方便。
Gentry 是基于以下三个目标设计的
- 使编写测试变得如此容易,即使是最大的懒人也会去尝试;
- 通过为您生成骨架来减轻编写样板代码的工作。
- 速度。您希望在推送之前运行测试,因此如果它们很慢,那将是令人讨厌的。
先决条件
- 确保您有 PHP7。真的,Gentry 使用了一些新特性,所以它在旧版本上会失败得很惨。
- 打开断言并配置它们在失败时抛出
AssertionError
。请参阅 手册中的这一部分;两个值都应设置为1
。
安装
Composer(推荐)
composer require --dev monomelodies/gentry
您现在可以运行 vendor/bin/gentry
。
手动
下载或克隆仓库。根目录下有一个可执行文件。
配置
在项目的根目录下创建一个 Gentry.json
文件。它使用以下选项
{ "src": "/path/to/src", "tests": "/path/to/tests", "bootstrap": "/path/to/bootstrap.php", "namespace": "Foo", "ignore": "some.*?regex" }
string|array src
string tests
两者 src
和 tests
都可以是绝对路径,也可以是相对于根目录的路径,因此 "/path/to/root/src"
可以简化为 "src"
。
目录是递归的。如果 Gentry 检测到 tests
在 src
内部,它会为您跳过它(但真的,不要这样做)。
Gentry 支持多个 src
目录,但只有一个 tests
目录。简单的理由是,将脚本放在 src
之外的 bin
目录中是很常见的,但仍然需要对其进行测试。
string|array bootstrap
文件("引导器")的路径,每个应用程序中的代码都需要。这通常是位于 index.php
入口点或类似文件中的某种东西。这些文件在 Gentry 分析您的代码时通常被忽略,并应该执行类似初始化自动加载器的事情。
您也可以传递一个文件数组而不是字符串。它们将按顺序添加。
includePath
在 bootstrap
之前解析,因此如果同时使用它们,您可以使用相对路径。否则,它们将相对于 get_cwd()
。
注意:如果
bootstrap
文件位于src
目录内,它们不会被忽略。Gentry 当然使用require_once
,但如果这些文件包含可测试的特性,它会尝试对它们进行合理的处理。
这并不一定是坏事;你实际上可以编写测试来测试你在其他测试中使用的模拟对象哦 :)
字符串 ignore
在 "src"
路径中忽略的类名正则表达式。对于自动忽略难以测试的类类型,如控制器,非常有用。如果你测试和源代码混合在一起,你也可以使用它(但说真的,不要这么做)。
用法
现在从命令行运行 Gentry 看看会发生什么
vendor/bin/gentry
它会抱怨它目前什么都不能做。这是有道理的,我们还没有写任何测试!
详细模式
如果你想获取更多信息,请使用 -v
标志运行 Gentry
vendor/bin/gentry -v
在默认模式下,仅显示重要信息。但当你遇到问题或者想要得到关于不完整测试等信息的反馈时,详细模式可能很有用。
检测环境
对于许多测试,你需要检测是否应该使用模拟对象(例如,数据库连接),或者“真实的东西”。最简单的方法是在需要的地方检查 getenv("GENTRY")
。Gentry 可执行文件会为你设置这个变量,所以这是一个确定你在测试模式的可靠方法。除非你还在其他地方使用相同的环境变量。但这会很愚蠢。
生成缺失的测试
使用 -g
标志运行 Gentry,为你生成缺失测试的骨架
vendor/bin/gentry -g
更多关于生成测试的内容,请参阅手册中的相应部分。