問題タブ [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.

0 投票する
1 に答える
727 参照

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++ プロジェクトや、上記の方法で分離されたコード例をお勧めしてもらえますか?)

0 投票する
3 に答える
1379 参照

delphi - すべてのテストケースからDUnitGUIのステータスメッセージを一度に表示するにはどうすればよいですか?

手順を使用TAbstractTest.Statusして、テスト中にDUnitGUIにいくつかのデバッグメッセージを表示できます。

しかし、テストのグループを実行すると、最後に実行されたテストのステータスメッセージしか表示されません。実行する各テストを選択せず​​に、どういうわけか完全なログを表示できますか?

0 投票する
1 に答える
305 参照

forms - DUnit テストからアクティブな TGUITestRunner を取得するには?

TGUITestRunner フォームは DUnit テスト結果を表し、 GUITestRunner.RunTest手順によって 1 回作成されます。

色付きのステータス メッセージを書き込んで、実行時に拡張したいと考えています。GUI の下部にあるステータス メッセージが TRichEdit に配置されるため、可能です。したがって、このフォームへのポインタを TTestCase のどこかに取得する必要があります。

DUnit のコードを修正せずにそれを行うことはできますか? たぶん、いくつかのハックをお勧めできますか?

0 投票する
2 に答える
1604 参照

delphi - Dunit プロジェクトで exe のバージョン情報が無効になっています。どうすれば元に戻せますか?

Dunit Test プロジェクトでバージョン情報を設定できないのはなぜですか? このプロジェクトではチェックボックスが無効になっていますが、他のプロジェクトでは無効になっています。スクリーンショットを参照してください。

ここに画像の説明を入力

0 投票する
1 に答える
175 参照

delphi - コンパイラがコンソール出力を生成しない原因は何ですか?

いくつかのユニットを追加すると、コンソールとしてコンパイルされないDUnitプロジェクトがあります。
プロジェクト(dpr)はウィザードによって作成され、CONSOLE_TESTRUNNER定義されます。

失敗するユニットにはいくつかのVCLコンポーネントが含まれていますが、それらに対してテストは実行されていません。
リンカーオプションを設定しようとしましたが、違いはありませんでした。
誰かが同様の問題を経験しましたか?
明確にするために:このプロジェクトはDelphi2010のWin32です。

0 投票する
1 に答える
207 参照

python - Delphi の Python DocTest と同等ですか?

Delphi の DocTest に相当するものはありますか。私は DUnit を使用していますが、Python DocTest のアイデアが気に入っています。hereのような答えを見ましたが、単純な関数の場合、DocTest のようなもので問題ないと思います。私の目標は、関数を作成するときにコメント ヘッダーでテストを定義することです。お気に入り :

0 投票する
1 に答える
295 参照

delphi - Delphiでサードパーティの電子メールコンポーネントを単体テストするにはどうすればよいですか?

POP3操作を含むいくつかの新しいコードを書いています。私はテストを書くことができるデザインを考え出そうとしているので、それはかなり分離されており、私が書いている新しいコードのほとんどを実行します。

私が直面している問題は、電子メールにサードパーティのコンポーネントを使用している方法が正しいことを確認する必要があることです。これには、たとえば、障害のあるPOP3サーバーからの奇妙な応答のテストが含まれます。

現在、モックPOP3クライアントを使用しているので、クライアントがエラーまたは奇妙な応答を受け取る可能性のあるシナリオのロジックをテストできます。ただし、サードパーティのコンポーネントのアップグレードなどの後も、これらの仮定が正しいこと、および正しいままであることを確認する必要があります。

また、SMTPがあります。私はあなたがJavaの世界でDumbsterを持っていることを知っています。

Delphiでの私の代替手段は何ですか?通常の 容疑者を使用して、独自のカスタムミニサーバーを作成しますか?

0 投票する
4 に答える
1195 参照

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に記載されています が、同じリンクは同じテストを実行する以外の解決策を提示しませんまた。

0 投票する
1 に答える
296 参照

delphi - dunitのDUnitWizardに含まれているXPObserverユニットを使用して、オブザーバーパターン、さらにはMVCパターンを実装するにはどうすればよいですか?

Stackoverflowに関する賢明な質問と回答のおかげで、Delphiのオブザーバーパターンの良い例があります。たとえば 、Delphiでオブザーバーパターンを実装するための最良の方法、Delphiでインターフェイスを使用する方法に関するビデオ/スクリーンキャストやその他のリソースはありますか?。これらのスタックオーバーフローの質問から、有益な資料の次のリンクが抽出されます。

  1. JoannaCarterのブログ

  2. SourceMakingサイト

  3. TDelphiHobbyistのブログ

  4. itte.noサイト

  5. dunitのDUnitWizard

その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)XPObserverMVCパターンを実装するためにどのように使用しますか?

または、次のようなコーディングの質問:

(3)は、関係を可能にする機能を提供XPObserverするTXPSubjectsと主張されています。single observer<->multiple subjectただし、FSubjectsプライベートとして宣言されます。ゲッターもありません。これは仕様によるものなのかしら?(たとえば、作者は書い// ...***DON'T*** refactor this method!!ていTXPSubject.DeleteObserverます。したがって、これや他の部分を完全に理解できないため、コードを変更する自信がありません。)もしそうなら、TXPSubjectsを使用してsingle observer<->multiple subject関係を有効にするための想定される方法は何ですか?

お手数をおかけしますが、よろしくお願いいたします。