phpunitがテスト中にメモリ使用量と実行時間を提供することは知っていますが、assertステートメント内でこれらのデータを使用する方法はありますか?
たとえば、消費された使用量が指定されたメモリまたは実行時間以上であるかどうかを表明したいとします。ネットとphpunitのマニュアルを検索すると、正確な情報を取得できます。
ヒントをありがとう。
phpunitがテスト中にメモリ使用量と実行時間を提供することは知っていますが、assertステートメント内でこれらのデータを使用する方法はありますか?
たとえば、消費された使用量が指定されたメモリまたは実行時間以上であるかどうかを表明したいとします。ネットとphpunitのマニュアルを検索すると、正確な情報を取得できます。
ヒントをありがとう。
実行時間と使用済みメモリでアサートを実行するには、phpunit_stopwatch_annotationsパッケージを使用できます。独自のTestCaseクラスを提供し、テストメソッドの特別なアノテーション(@executionTimeおよび@memoryUsage)のサポートを追加します。
phpunit_stopwatch_annotationsの使用方法:
StopwatchAnnotations\TestCaseからTestCaseクラスを拡張します
class ExampleTest extends \StopwatchAnnotations\TestCase
注釈の使用を開始するには、次のように記述します
@executionTime time_in_milliseconds
また
@memoryUsage memory_in_bytes
メソッドの前にdocblockで。実行時間とメモリ使用量は、各テスト後に自動的にアサートされます。
間違った方向に考えているのかもしれませんが、このようなことを試してみませんか?
class memTest extends PHPUnit_Framework_TestCase {
public function testMemory() {
$this->assertGreaterThanOrEqual(4194304, memory_get_usage());
}
}
目的の仮定指定子(ここでは:)を使用してassertGreaterThanOrEqual
、目的の値をと照合しますmemory_get_usage()
。
私の場合、出力は次のようになります。
>phpunit unittests\memtest.php
PHPUnit 3.7.15
F
Time: 0 seconds, Memory: 1.75Mb
There was 1 failure:
1) memTest::testMemory
Failed asserting that 1503768 is equal to 4194304 or is greater than 4194304.
mypath\memtest.php:5
FAILURES!
Tests: 1, Assertions: 2, Failures: 1.
ここに興味がある場合は、StopwatchAnnotaionsをリスナーに書き直して、メモリ使用量と実行時間に関するアサーションをここに統合できるようにします。
https://github.com/jclaveau/phpunit-profile-asserts
public function test_usages()
{
...
$this->assertExecutionTimeBelow(100); // seconds
$this->assertMemoryUsageBelow('1M');
}
乾杯