0

最初に変なタイトルで申し訳ありませんが、話したいことの名前を付ける方法がわからないので、「時限アサート」と呼びました。
基本的に、特定のクラス機能をテストしたいが、そのクラス メソッドは非同期であるとします (たとえば、instance.Start() はすぐに戻りますが、プライベート メンバー instance.Mode は 2 秒後に enum Started に変更されます)。だから何かのようになります:

MyObject instance; 
instance.start();
// invented function, first part is the normal assert, 3000 is delay  in milliseconds 
timed_assert(instance.GetMode()==MyObject::Mode::Started, 3000);

良い考えですか?ブロッキング関数として timed_assert を実装するのは些細なこと (スリープ + 通常のアサート) であり、ノンブロッキングにすることは私のスキルレベルを超えていますが、確実に実行できる場合はオプションとして自由に検討してください。

4

1 に答える 1

0

コメントにすでに答えがあると思います....「いいえ。時限アサートはお勧めできません。」

「500ミリ秒以内に状態をXに変更する必要がある、理由:ユーザーは遅延を嫌う」と説明する要件の種類は、十分に具体的ではありません。

システムが実行されているハードウェアは何ですか? 負荷はどれくらいですか?

この種の絶対要件は正確に指定する必要があり、単体テストや統合テストではなくパフォーマンス テストと見なす必要があります。ユニット/統合テストは、実行するテスト環境に関係なく、正常に実行されるはずです。ハードウェアをテストしていませんよね?

于 2012-08-15T12:53:46.897 に答える