Main Content

matlab.unittest.constraints.Eventually クラス

パッケージ: matlab.unittest.constraints
スーパークラス: matlab.unittest.constraints.Constraint

制約を非同期的に満たす値のポーリング

構築

outConstObj = Eventually(constObj)outConstObj 制約を作成します。この制約は、constObj 制約を非同期的に満たす、関数ハンドルから返される実際の値をポーリングします。関数ハンドルの評価が 20 秒以内に制約を満たす値を生成しない場合、この制約は満たされません。テスト フレームワークは、制約 Eventually が、指定された関数が制約を満たすのを待機する間に、関数 drawnow を呼び出します。

outConstObj = Eventually(constObj,'WithTimeoutOf',timeOutVal) は、timeOutVal で指定されたタイマー周期内に満たされなければならない制約に関してポーリングする制約を作成します。

入力引数

constObj

Constraint インスタンス

timeOutVal

パス動作の生成を試行する最大時間。秒単位で指定します。

既定値: 20

プロパティ

FinalReturnValue

指定された関数ハンドルをテスト フレームが呼び出すときに生成される出力。このプロパティは読み取り専用で、テスト フレームが関数ハンドルを呼び出すときに設定されます。

Timeout

パス動作の生成を試行する最大時間。入力引数 timeOutVal で指定します。

コピーのセマンティクス

値。値クラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

対話型テスト用にテスト ケースを作成します。

import matlab.unittest.TestCase
import matlab.unittest.constraints.Eventually
import matlab.unittest.constraints.IsGreaterThan
import matlab.unittest.constraints.IsLessThan

testCase = TestCase.forInteractiveUse;

タイムアウト期間内で、toc を呼び出すと 10 (秒) を超える値になることを検証します。制約 Eventually は、制約が満たされるか経過時間がタイムアウト期間を超えるまで繰り返し toc を呼び出します。繰り返し toc を呼び出すと、前回の tic の呼び出しからの経過時間になります。

tic
testCase.verifyThat(@toc, Eventually(IsGreaterThan(10)))
Interactive verification passed.

toc がパスの値に達するのに、検証が 10 秒程度かかる場合があります。tic の呼び出しを発行してから verifyThat コマンドを発行するまでの間隔が 10 秒を超えると、toc が既に 10 より大きな値を返しているため、検証は即座に戻ります。

タイムアウト期間内で、toc が負の値を返さないことを検証します。

testCase.verifyThat(@toc, Eventually(IsLessThan(0)))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
Eventually failed.
--> The constraint never passed with a timeout of 20 second(s).
--> IsLessThan failed.
    --> The value must be less than the maximum value.
    
    Actual Value:
      36.532254706346720
    Maximum Value (Exclusive):
         0

Evaluated Function:
  function_handle with value:

    @toc

経過時間が 0 より小さくなることはないため、この失敗は予想どおりです。ただし、Eventually はタイムアウト期間に toc をポーリングします。

Eventually が 5 秒間ポーリングするようにタイムアウト期間を調整します。

tic
testCase.verifyThat(@toc, Eventually(IsGreaterThan(10), ...
    'WithTimeoutOf', 5))
Interactive verification failed.

---------------------
Framework Diagnostic:
---------------------
Eventually failed.
--> The constraint never passed with a timeout of 5 second(s).
--> IsGreaterThan failed.
    --> The value must be greater than the minimum value.
    
    Actual Value:
       5.143138452046230
    Minimum Value (Exclusive):
        10

Evaluated Function:
  function_handle with value:

    @toc

ticverifyThat の呼び出しの間隔が 5 秒を超えない場合、変更されたタイムアウト期間内で経過時間が 10 秒以下になるため、テストは失敗します。