4

phpunitがテスト中にメモリ使用量と実行時間を提供することは知っていますが、assertステートメント内でこれらのデータを使用する方法はありますか?

たとえば、消費された使用量が指定されたメモリまたは実行時間以上であるかどうかを表明したいとします。ネットとphpunitのマニュアルを検索すると、正確な情報を取得できます。

ヒントをありがとう。

4

3 に答える 3

4

実行時間と使用済みメモリでアサートを実行するには、phpunit_stopwatch_annotationsパッケージを使用できます。独自のTestCaseクラスを提供し、テストメソッドの特別なアノテーション(@executionTimeおよび@memoryUsage)のサポートを追加します。

phpunit_stopwatch_annotationsの使用方法:

  1. StopwatchAnnotations\TestCaseからTestCaseクラスを拡張します

    class ExampleTest extends \StopwatchAnnotations\TestCase

  2. 注釈の使用を開始するには、次のように記述します

    @executionTime time_in_milliseconds

    また

    @memoryUsage memory_in_bytes

    メソッドの前にdocblockで。実行時間とメモリ使用量は、各テスト後に自動的にアサートされます。

于 2015-08-02T15:09:37.220 に答える
3

間違った方向に考えているのかもしれませんが、このようなことを試してみませんか?

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.
于 2013-03-27T06:35:49.667 に答える
1

ここに興味がある場合は、StopwatchAnnotaionsをリスナーに書き直して、メモリ使用量と実行時間に関するアサーションをここに統合できるようにします。

https://github.com/jclaveau/phpunit-profile-asserts

public function test_usages()
{
    ...

    $this->assertExecutionTimeBelow(100); // seconds
    $this->assertMemoryUsageBelow('1M');
}

乾杯

于 2018-07-13T11:32:33.223 に答える