問題タブ [dunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Firemonkey アプリケーションの単体テスト
Firemonkey アプリ (C++) の単体テストに、RAD Studio XE2 に付属の DUnit を使用しようとしています。
問題は、DUnit が VCL プロジェクトであるため、テスト プロジェクトに Firemonkey ユニット フォーム (例: UfrmMain.h) を含めることができないことです。
Visual を Logic (MultiTier/MVC) で分離しても、Firemonkey ライブラリをクラスに含めることはできません (TConnection 型のオブジェクトを持つ "CustomDatabase" クラスがあり、それのみが利用可能である場合、これが役立つ場合があります)。 Firemonkeyの場合 - もちろん単なる例です)。
firemonkey コードを完全に分離してフォームに残し、論理/データを純粋な C++ コードのクラスに保持すると、テストが可能になります。
では、この「ハンディキャップ」は実際には良いことなのでしょうか? MultiTier/MVC を使用するよう強制されますか? (C++ でのこれは私にとって初めてのことです) または、フォームもテストできる単体テストの代替手段を探す必要がありますか?
(また、github の C++ プロジェクトや、上記の方法で分離されたコード例をお勧めしてもらえますか?)
delphi - すべてのテストケースからDUnitGUIのステータスメッセージを一度に表示するにはどうすればよいですか?
手順を使用TAbstractTest.Status
して、テスト中にDUnitGUIにいくつかのデバッグメッセージを表示できます。
しかし、テストのグループを実行すると、最後に実行されたテストのステータスメッセージしか表示されません。実行する各テストを選択せずに、どういうわけか完全なログを表示できますか?
forms - DUnit テストからアクティブな TGUITestRunner を取得するには?
TGUITestRunner フォームは DUnit テスト結果を表し、 GUITestRunner.RunTest
手順によって 1 回作成されます。
色付きのステータス メッセージを書き込んで、実行時に拡張したいと考えています。GUI の下部にあるステータス メッセージが TRichEdit に配置されるため、可能です。したがって、このフォームへのポインタを TTestCase のどこかに取得する必要があります。
DUnit のコードを修正せずにそれを行うことはできますか? たぶん、いくつかのハックをお勧めできますか?
delphi - Dunit プロジェクトで exe のバージョン情報が無効になっています。どうすれば元に戻せますか?
Dunit Test プロジェクトでバージョン情報を設定できないのはなぜですか? このプロジェクトではチェックボックスが無効になっていますが、他のプロジェクトでは無効になっています。スクリーンショットを参照してください。
delphi - コンパイラがコンソール出力を生成しない原因は何ですか?
いくつかのユニットを追加すると、コンソールとしてコンパイルされないDUnitプロジェクトがあります。
プロジェクト(dpr)はウィザードによって作成され、CONSOLE_TESTRUNNER
定義されます。
失敗するユニットにはいくつかのVCLコンポーネントが含まれていますが、それらに対してテストは実行されていません。
リンカーオプションを設定しようとしましたが、違いはありませんでした。
誰かが同様の問題を経験しましたか?
明確にするために:このプロジェクトはDelphi2010のWin32です。
python - Delphi の Python DocTest と同等ですか?
Delphi の DocTest に相当するものはありますか。私は DUnit を使用していますが、Python DocTest のアイデアが気に入っています。hereのような答えを見ましたが、単純な関数の場合、DocTest のようなもので問題ないと思います。私の目標は、関数を作成するときにコメント ヘッダーでテストを定義することです。お気に入り :
delphi - Delphiでサードパーティの電子メールコンポーネントを単体テストするにはどうすればよいですか?
POP3操作を含むいくつかの新しいコードを書いています。私はテストを書くことができるデザインを考え出そうとしているので、それはかなり分離されており、私が書いている新しいコードのほとんどを実行します。
私が直面している問題は、電子メールにサードパーティのコンポーネントを使用している方法が正しいことを確認する必要があることです。これには、たとえば、障害のあるPOP3サーバーからの奇妙な応答のテストが含まれます。
現在、モックPOP3クライアントを使用しているので、クライアントがエラーまたは奇妙な応答を受け取る可能性のあるシナリオのロジックをテストできます。ただし、サードパーティのコンポーネントのアップグレードなどの後も、これらの仮定が正しいこと、および正しいままであることを確認する必要があります。
また、SMTPがあります。私はあなたがJavaの世界でDumbsterを持っていることを知っています。
delphi - Delphi 7、DUnit、FastMM で文字列が正しく報告されない
DUnit と FastMM を使用してファイナライズされていないメモリ ブロックをキャッチしていますが、バグがあるようです。FastMM、DUnit、または Delphi 自体にあるかどうかはわかりませんが、次のようになります。
テスト ケースに内部文字列があると、テストがメモリ リークで失敗します。DUnit GUI を閉じずに同じテストを再度実行すると、テストは成功します。DUnit GUI テストでも同じことが起こります。同じ理由からだと思います。私のアプリにはリークはありません。その証拠は、FastMM がそのような場合にリーク レポートを生成しないことです。
質問 1: AllowedMemoryLeakSize を設定せずにそれらを無視する方法はありますか
質問 2: Delphi 7 を使用していますが、Delphi XE でこの修正が行われた場合、何かニュースはありますか?
私の実際のテスト構成:
- test.FailsOnNoChecksExecuted := True;
- test.FailsOnMemoryLeak := True;
- test.FailsOnMemoryRecovery:= False;
- test.IgnoreSetUpTearDownLeaks:= True;
これがサンプルコードです(実装のみ)
ありがとう!!!!
更新:私が直面している問題はhttp://members.optusnet.com.au/mcnabp/Projects/HIDUnit/HIDUnit.html#memoryleakdetectionに記載されています が、同じリンクは同じテストを実行する以外の解決策を提示しませんまた。
delphi - dunitのDUnitWizardに含まれているXPObserverユニットを使用して、オブザーバーパターン、さらにはMVCパターンを実装するにはどうすればよいですか?
Stackoverflowに関する賢明な質問と回答のおかげで、Delphiのオブザーバーパターンの良い例があります。たとえば 、Delphiでオブザーバーパターンを実装するための最良の方法や、Delphiでインターフェイスを使用する方法に関するビデオ/スクリーンキャストやその他のリソースはありますか?。これらのスタックオーバーフローの質問から、有益な資料の次のリンクが抽出されます。
その2番目のstackoverflowの質問では、mghieはdunit's DUnitWizard's XPObserver.pas
非常に興味深く、他の質問は詳しく調べる価値があると説明しましXP*.pas
た。ただし、XPObserver
ユニットは2つの場所でのみ参照されますdunit\Contrib\DUnitWizard\Source\Common\dunit\XPObserverTests.pas
。ここでは、テストの唯一の関心は参照カウントのチェックであるように見えdunit\Contrib\DUnitWizard\Source\DelphiExperts\DUnitProject\XPTestedUnitUtils.pas
、XPObserverユニットで宣言されたIXPFamilyタイプのみが使用されます。
したがって、このXPObserver
ユニットを使用する際のベストプラクティスは何でしょうか。
例:次のような設計の質問:
(1)XPObserver
ユニットを使用して何かを行うオブザーバーパターンを実装するにはどうすればよいですか?
(2)XPObserver
MVCパターンを実装するためにどのように使用しますか?
または、次のようなコーディングの質問:
(3)は、関係を可能にする機能を提供XPObserver
するTXPSubjects
と主張されています。single observer<->multiple subject
ただし、FSubjects
プライベートとして宣言されます。ゲッターもありません。これは仕様によるものなのかしら?(たとえば、作者は書い// ...***DON'T*** refactor this method!!
ていTXPSubject.DeleteObserver
ます。したがって、これや他の部分を完全に理解できないため、コードを変更する自信がありません。)もしそうなら、TXPSubjectsを使用してsingle observer<->multiple subject
関係を有効にするための想定される方法は何ですか?
お手数をおかけしますが、よろしくお願いいたします。