ユニットテスト実行中のパフォーマンスデータの収集
数年ほど前、Caché Foundationsの講座(現「Developing Using InterSystems Objects and SQL」)において、%UnitTestフレームワークの基礎を講義していたことがあります。 その時、ある受講者から、ユニットテストを実行している間に、パフォーマンス統計を収集できるかどうかを尋ねられました。 それから数週間後、この質問に答えるために、%UnitTestの例にコードを追加したのですが、 ようやく、このコミュニティでも共有することにしました。
Processクラスの%SYSTEMには、プロセスについて収集可能なメトリクスが(所要時間以外に)いくつか提供されています。
- 所要時間
- 実行された行
- グローバル参照
- システムCPU時間
- ユーザーCPU時間
- ディスク読み取り時間
上記の統計を収集する任意のユニットテストを有効にするには、%UnitTest.TestCaseのサブクラスを作成してプロパティを追加します。
Class Performance.TestCase Extends %UnitTest.TestCase
{
Property Duration As %Time;
Property Lines As %Integer;
Property Globals As %Integer;
Property SystemCPUTime As %Integer;
Property UserCPUTime As %Integer;
Property DiskReadTime As %Integer;
}
作成する特定のユニットテストは、%UnitTest.TestCaseではなく、新しいサブクラスから継承されている必要があります。
サブクラスではOnBeforeOneTest()を使って、各ユニットテストの統計データを初期化します。 DiskReadTime以外、現在値でプロパティを初期化します。
/// パフォーマンス統計を初期化します
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">Method OnBeforeOneTest(testname As %String) As %Status</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">{</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> // 現在の値で初期化します</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..Duration = $zh</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..Lines = $system.Process.LinesExecuted()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..Globals = $system.Process.GlobalReferences()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><span style=""> set ..SystemCPUTime = $piece(CPUTime, ",", 1)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..UserCPUTime = $piece(CPUTime, ",", 2)</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> // ディスク時間を0にリセットし、カウントを開始します</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> do $system.Process.ResetDiskReadTiming()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> do $system.Process.EnableDiskReadTiming()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> return $$$OK</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">}</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none">OnAfterOneTest() を使って、各ユニットテストの統計データを確定します。 DiskReadTime以外、現在の値から初期値を減算します。</span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
</div>
<div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">/// パフォーマンス統計を確定します </font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">/// ここに、分析用にカウンターを別のテーブルに保存するためのコードを追加できます。</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">Method OnAfterOneTest(testname As %String) As %Status</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">{</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><span style=""> set ..Duration = $zh - ..Duration</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..Lines = $system.Process.LinesExecuted() - ..Lines</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..Globals = $system.Process.GlobalReferences() - ..Globals</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set CPUTime = $system.Process.GetCPUTime()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..SystemCPUTime = $piece(CPUTime, ",", 1) - ..SystemCPUTime</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..UserCPUTime = $piece(CPUTime, ",", 2) - ..UserCPUTime</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> // ディスク読み取り時間を取得し、カウントを停止します</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set ..DiskReadTime = $system.Process.DiskReadMilliseconds()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> do $system.Process.DisableDiskReadTiming()</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> // ユニットテストログにメッセージを追加します</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set msg = "Performance: " _</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> "Duration: " _ ..Duration _</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> ", Lines: " _ ..Lines _</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> ", Globals: " _ ..Globals _</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> ", System CPU Time: " _ (..SystemCPUTime / 1000) _</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> ", User CPU Time: " _ (..UserCPUTime / 1000) _</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> ", Disk Read Time: " _ (..DiskReadTime / 1000)</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> do $$$LogMessage(msg)</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> return $$$OK</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas">}</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
</div>
ちょっとした技がもう1つあります。 統計を収集するかしないかを指定して、ユニットテストを実行したほうが良いかもしれません。 したがって、ユニットテストを呼び出すコードに引数(%Boolean 1または0)を追加し、何らかの方法で渡す必要があります。 テストを実際に実行するメソッド(RunTest() またはほかのRun*() メソッドの1つ)は、第3引数に配列を取り、参照形式で渡します。 次は、そのサンプルコードです。
// logging引数(1または0)を保持する配列を作成し、それを参照で渡します
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> set p("logging") = logging</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
<div>
<span style="font-size:12px"><span style="caret-color:#000000"><span style="color:#000000"><span style=""><span style="font-style:normal"><span style="font-variant-caps:normal"><span style="font-weight:normal"><span style="letter-spacing:normal"><span style="orphans:auto"><span style="text-transform:none"><span style=""><span style="widows:auto"><span style="word-spacing:0px"><span style="-webkit-text-size-adjust:auto"><span style="text-decoration:none"><font><font face="Consolas"> do ##class(%UnitTest.Manager).RunTest(test, qualifiers, .p)</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
</div>
配列に渡す値は、OnBeforeOneTest() と OnAfterOneTest() でアクセスできます。 これを両方のメソッドの最初の行に追加します。
if (..Manager.UserFields.GetAt("logging") = 0) { return $$$OK }
以上です! 皆さんのご質問、コメント、その他のアイデアをぜひお聞かせください。
ディスカッション (0)0