hhvm / hacktest
此包已被废弃,不再维护。未建议替代包。
Hack 测试库
v2.4.0
2022-06-06 18:42 UTC
Requires
- hhvm: ^4.128
- facebook/hh-clilib: ^2.5.0rc1
- hhvm/type-assert: ^3.0|^4.0
Requires (Dev)
- facebook/fbexpect: ^2.8.1
- hhvm/hhast: ^4.0
- hhvm/hhvm-autoload: ^2.0.2|^3.0
README
HackTest
HackTest 是一个单元测试运行器和基类。断言由独立的库提供,例如 fbexpect。
安装
php /path/to/composer.phar require --dev hhvm/hacktest facebook/fbexpect
用法
运行测试
vendor/bin/hacktest [OPTIONS] tests/
测试是类中的方法,其中
- 类名与文件名匹配
- 类名以 'Test' 结尾
- 方法是公共的
- 方法名以 'test' 开头
测试方法可以是异步的,并且将自动等待。
此外,类可以实现几个特殊方法
public static function beforeFirstTestAsync(): Awaitable<void>
public static function afterLastTestAsync(): Awaitable<void>
public function beforeEachTestAsync(): Awaitable<void>
public function afterEachTestAsync(): Awaitable<void>
最后,对于数据驱动的测试,可以使用 <<DataProvider>>
属性
public function provideFoos(): vec<(string, int)> { return vec[ tuple('foo', 123), tuple('bar', 456), ]; } <<DataProvider('provideFoos')>> public function testFoos(string $a, int $b): void { .... }
示例
"我想测试目录中的所有文件"
$ vendor/bin/hacktest tests/clean/exit/
...
Summary: 3 test(s), 3 passed, 0 failed, 0 skipped, 0 error(s).
"我想运行特定文件中的所有测试"
$ vendor/bin/hacktest tests/dirty/DirtyAsyncTest.php
FFF
1) DirtyAsyncTest::testWithNonNullableTypesAsync
Failed asserting that Array &0 (
0 => 1
1 => 'foo'
) is not identical to Array &0 (
0 => 1
1 => 'foo'
).
/fakepath/hacktest/tests/dirty/DirtyAsyncTest.php(22): Facebook\FBExpect\ExpectObj->toNotBeSame()
/fakepath/hacktest/src/Framework/HackTestCase.php(43): DirtyAsyncTest->testWithNonNullableTypesAsync()
2)...
Summary: 3 test(s), 0 passed, 3 failed, 0 skipped, 0 error(s).
有关详细模式的示例,请参阅 example.txt
贡献
请参阅 CONTRIBUTING.md。
许可证
HackTest 框架是 MIT 许可的。