進捗状況4GLまたはWebSpeedを使用してassertionsを実装する最良の方法は何ですか?進行中のアサーションの実装4GL
答えて
いくつかの考慮がここに私の解決策であり、後問題にそれは、常にテストや本番使用のために再コンパイルされている開発環境propathは、テスト環境と本番環境とコードと異なっているという仮定に基づいて動作します:
&IF PROPATH MATCHES '*development*' &THEN
&SCOPED-DEFINE ASSERTION {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} ~
{11} {12} {13} {14} {15} {16} {17} {18} {19} {20} ~
{21} {22} {23} {24} {25} {26} {27} {28} {29} {30} ~
{31} {32} {33} {34} {35} {36} {37} {38} {39} {40} ~
{41} {42} {43} {44} {45} {46} {47} {48} {49} {50} ~
{51} {52} {53} {54} {55} {56} {57} {58} {59} {60} ~
{61} {62} {63} {64} {65} {66} {67} {68} {69} {70} ~
{71} {72} {73} {74} {75} {76} {77} {78} {79} {80}
IF NOT ({&ASSERTION}) THEN
MESSAGE "Failed assertion {&ASSERTION} in" PROGRAM-NAME(1).
IF ({&ASSERTION}) = ? THEN
MESSAGE "Unknown value as a result of assertion {&ASSERTION} in"
PROGRAM-NAME(1).
&ENDIF
コードは任意の副作用を回避するために設計されており、十分に均等に動作します任意の実行環境(GUIまたはChUI、WebSpeed、AppServer、バッチなど)で実行できます。
1)コードを "assert"(拡張子なし)というファイルとして保存します。
2)PROPATHが指すディレクトリにファイルを置きます。
3)使用例:バリエーションとして
{assert valid-handle(hProc)}
{assert i > 0 and i <= 100}
{assert cExtra begins ‘opt’} /* note the single quotes */
{assert dtEnd > = dtStart}
それだけで空をテストし、本番環境でファイルを含め、開発バージョンはちょうどになります持っていることによって、完全にpropathに頼って回避することが可能です:
&SCOPED-DEFINE ASSERTION {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} ~
{11} {12} {13} {14} {15} {16} {17} {18} {19} {20} ~
{21} {22} {23} {24} {25} {26} {27} {28} {29} {30} ~
{31} {32} {33} {34} {35} {36} {37} {38} {39} {40} ~
{41} {42} {43} {44} {45} {46} {47} {48} {49} {50} ~
{51} {52} {53} {54} {55} {56} {57} {58} {59} {60} ~
{61} {62} {63} {64} {65} {66} {67} {68} {69} {70} ~
{71} {72} {73} {74} {75} {76} {77} {78} {79} {80}
IF NOT ({&ASSERTION}) THEN
MESSAGE "Failed assertion {&ASSERTION} in" PROGRAM-NAME(1).
IF ({&ASSERTION}) = ? THEN
MESSAGE "Unknown value as a result of assertion {&ASSERTION} in"
PROGRAM-NAME(1).
追加のヒントは、自動的に{assert}に展開される、選択したエディタに自動テキストマクロを追加することです。
進歩がアサーションをネイティブの取り扱いはありませんが、私が思い付くした最高ですので:
IF NOT <assertion> THEN
RUN assertionFailed.p.
assertionFailed.pは、プログラマを電子メール、または条件を記録しても正常に終了することができます。
通常、アサーションは最終コードから省略されているので、私はプリプロセッサのルートを提案します。次のようなことをすると、2つのインクルードファイルとして設定されます。実稼働環境にコンパイルするときは、debugalert.iが空であることを確認してください。 assert.iが...あなたがメッセージ、停止、電子メールなどを好きなように編集することができ、セットアップに
あなただけの形式たどるアサーション{assert.i &条件を=}
/* assert.i */ {debugalert.i}
& IF DEFINED(DEBUGALERT)THEN <> 0 &
IF NOT {& CO NDITION} はTHEN DO:
MESSAGE THIS-PROCEDURE:FILENAME "ERROR...{&CONDITION}"
VIEW-AS ALERT-BOX.
/* add code to email message etc.. or stop */
ENDを。
& ENDIF
/*アサーションがこの文を削除するオフにするテストまたは開発環境でdebugalert.i */
& GLOBAL-DEFINE DEBUGALERT
/*テストコードでは、次のようにします:/ /テストアサーション*/
DEFのVARのh_ct AS INT NO-UNDO INIT 10
{& CONDITION assert.i = "h_ct = 8"}
- 1. datetimeフィールドの進行中の書式設定 - 4gl
- 2. 進行中のディレクトリにテキストファイルをリストする方法4GL?
- 3. Office 2007のアップグレードが4GL進行コードを中断する
- 4. 進行中のフィールドの一意のレコード数をカウントする方法4gl?
- 5. 進行中の4gl言語の未発行注文(upost-order)を作成するコードは何ですか?
- 6. 進行中の進行中のプロセスの例PlayFramework 2
- 7. 実行中のアクティビティをJavaのアンドロイドで実行中の進行中に無効にする方法
- 8. 進行中の特定の条件に基づいて文字列をトリミングする方法4gl?
- 9. 進行中のテーブルに.csvファイルを書き込む方法は、4glを開いた?
- 10. 進行中のコンボボックスからテーブル名を取るTemp-Tableを作成する4gl、Open Edge
- 11. Android、進行中のアニメーションバーが実行されない
- 12. WCFの実行中に進行状況が更新される
- 13. プログレスホイール進行中ダイアログのみ
- 14. CSS:進行中のサイトへ
- 15. ASP.NET MVCで実装された長期実行タスクの進行状況バーを実装する2 AsyncController
- 16. C#での進捗モニタの実装
- 17. 進捗状況4glとCの構造体
- 18. javascript/jquery/phpのhttpリクエスト(長時間実行)実行中に "進行中"を表示
- 19. メソッドがWindowsアプリケーションで実行中に進行状況を表示
- 20. カウントを行うためのセマフォの実装。現在実行中のインスタンスの数
- 21. Visual Studio 2012テストエクスプローラテスト進行中
- 22. 進行中のダンプロードの高速化9.1E
- 23. 進行中の.netプロセスのデバッグ
- 24. Spring mvc&DWR - アップロードファイルの進行中にバーを実装するのに助けが必要
- 25. 中***アサーション失敗 - [AppDelegate createDatabaseExecutableFile]
- 26. すでに実行中のBackgroundTaskからの進捗状況の更新?
- 27. エスプレッソでのリサイクルのテスト、クリックやアサーションの実行方法
- 28. UICollectionView:中アサーションの失敗 - [UICollectionView _endItemAnimations]
- 29. テスト中にモックを返し、通常の実行中に実際の実装を返すクラスインスタンス
- 30. ハンドル中のクエリ実行の進捗状況を確認する方法は?