devel0pmenthero / crash
一个用于单元测试和渗透测试代码的小型库。
1.0.0
2021-06-23 06:08 UTC
README
一个用于PHP的单元测试和渗透测试库。
安装
composer require devel0pmenthero/crash
使用
注意:任何参数都可以通过首字母大写来指定。
生成测试
单个类
Crash::Create(Subject::class, true, false);
php Crash.php -c[--create] --class="Subject"
目录
Crash::CreateFromPath("./targetdir", true, false);
php Crash.php -c[--create] -p[--path]="./targetdir"
可以通过传递可选的 "inherit"-参数包含继承的方法。
php Crash.php -c[--create] -p[--path]="" -i[--inherit]
可以通过传递可选的 "overwrite"-参数覆盖现有的测试类。
php Crash.php -c[--create] -p[--path]="" -o[--overwrite]
运行测试
Crash::Test("./targetdir");
php Crash.php -t[--test] -p[--path]="./targetdir"
省略路径将默认使用存储在公共 Crash::Tests
常量中的路径。
属性
Crash 允许用户通过定义自定义属性来控制特定测试的执行。在从现有源生成 Crash\Tests 时,库会将任何现有的 (Crash-) 属性复制到最终的测试类中。
重复
#[Repeat(Amount: int, Interval: int)]
"重复" 属性允许在可选的微秒间隔内多次执行测试用例。
Crash
#[Crash(Amount: int, Interval: int)]
"Crash" 属性与前者类似,但会传递随机数量的随机值到所需的测试用例中。
值
#[Values(Random: int, Interval: int, ...$Values)]
"值" 属性允许指定传递给所需测试用例的自定义值。或者,属性可以生成指定数量的随机值。
跳过
#[Skip]
"跳过" 属性简单指示库跳过测试或用例。
编写测试
测试是简单的PHP类,必须位于 "Crash\Tests"-命名空间中才能被识别为测试。
<?php declare(strict_types=1); namespace Crash\Tests; use Crash\Test\Skip; use Crash\Test\Method; use Crash\Test\Method\Repeat; use Crash\Test\Method\Values; use Crash\Test\Method\Crash; #[Skip] class MyTest extends \Crash\Test { private int $Repetitions = 0; #[Repeat(5)] public function Repeat() { $this->Repetitions++; } public function RepeatedEnough(): void{ \assert($this->Repetitions === 5); } #[Method\Skip] public function FailsAnyway(): void { \assert(false); } #[Values("a", 12, true)] public function Values($A, $B, $C): void { \assert($A === "a"); \assert($B === 12); \assert($C === true); } #[Values(Random: 8)] public function RandomValues(...$Values): void { \assert(\count($Values) === 8); } #[Crash(Amount: 1000000, Interval: 20)] public function Crash(...$Values): void { ClassToTest::Method(...$Values); } }