hhvm/hacktest

此包已被废弃,不再维护。未建议替代包。

Hack 测试库

维护者

详细信息

github.com/hhvm/hacktest

源代码

问题

安装次数: 557,049

依赖项: 84

建议者: 0

安全: 0

星标: 29

关注者: 15

分支: 12

开放问题: 11

语言:Hack

v2.4.0 2022-06-06 18:42 UTC

README

HackTest

Build Status

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 许可的。