問題タブ [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 - 単体テストを開始するために、絡み合った使用の依存関係を処理する方法は?
維持および開発するための厄介なDelphi7レガシーシステムがあります。私はすでに「レガシーコードを効果的に使用する」を読んでいて、この本がとても好きです。
本のアドバイスに従うことを始めるために、私はテストプロジェクトを作成し、単一のテストを書いてみました。これを行うには、テストプロジェクトにユニットを追加する必要がありますが、ここに問題があります。テスト対象のシステムには、恐ろしい使用依存関係があります。あるユニットは他のユニットを使用し、他のユニットは他のユニットを使用します。ほとんどのユニットは、直接的または間接的に1つの特定のユニットを使用しているようであり、このユニットには、uses句に170の依存関係があります。間接的な循環依存関係もあります。
現在、レガシーシステムのすべてのユニットをテストプロジェクトに追加しようとしていますが、「ユニットxxxが異なるバージョンのxxxでコンパイルされた」などのあらゆる種類の問題が発生しています。
だから私は何か間違ったことをしているのだろうか。私は以前に単体テストを使用しましたが、私自身のプロジェクトでは、より小さく、より優れた構造とモジュール化を備えていました。この状況で私が持っているオプションは何ですか?私は何かが足りないのですか?
delphi - Free Pascal と Delphi の単一ソースの単体テスト
Delphi と Free Pascal の両方でコンパイルして実行できるように単体テストを作成する方法はありますか?
Delphi と Free Pascal では単体テスト フレームワークが異なるため、両方のコンパイラを対象とする開発者 (たとえば、ライブラリとフレームワークの開発者) の作業が重複します。
したがって、DUnit または FPCUnit フレームワークのいずれかを使用し、テスト ケースのソース コード (またはフレームワーク自体) を調整して、他のコンパイラでも動作するようにする方法があるかもしれません。
したがって、本質的に質問は次のとおりです。
- 可能な限り変更を加えずに両方のコンパイラ (Delphi と Free Pascal) でコンパイルできるフレームワーク (DUnit または FPCUnit) はどれですか?
また
- Delphi と FPC で動作する 3 番目のフレームワーク (TSynTest について言及してくれた Arnaud に感謝) はありますか?
c++ - C++ Builder を使用した DUnit の代替手段は?
C++ ビルダー XEで開発されたプロジェクトがいくつかあります。
単体テストを追加したいのですが、インストールされているDUnitフレームワークは Delphi に適していますが、C++ ビルダーとの統合はあまり良くありません (そして非常に制限されています)。
他にどの xUnit フレームワークを簡単に使用できますか?
delphi - Delphi 7、FastMM、およびDUnitGUITestingが誤ったメモリリークで失敗したテスト
FastMMの誤検知で問題が発生しました。今回のリークは、フォームのテストの場合です。これは、ここで説明したものと非常によく似ています。
フォームとその中にいくつかの単純な古いVCLコントロールを取得しました。最初のテスト実行では、実際には存在しないリークが示されています。2回目の実行ではリークは発生しません。すべてのDUnitソースコードを検索しましたが、修正する理由が見つかりませんでした。誰かが私を助けることができますか?
次の理由により、テストを2回実行する余裕はありません。1。継続的インテグレーションで実行されます。2.一部のテストには実際に時間がかかり、2倍にするのは賢明ではありません。
DUnitGUIで最後の3つのオプションを確認しました。-シャットダウン時にメモリリークタイプを報告する-メモリリークが発生した場合はTestCaseに失敗する-SetUp/TearDownでメモリリークを無視する
サンプルコードは次のとおりです。
delphi - Delphi XEのDUnitはどこにありますか?
DUNITはすでにDelphiXEに統合されているようです。しかし、私はそれを見つけることができません。私の質問は次のとおりです。
- どうすればアクセスできますか?手動でインストールする必要がありますか?DUnitをインストールするかどうかを尋ねるDelphiのセットアップを覚えていません。
- 手動でインストールする必要がある場合は、sourceforge.netから最新バージョンをダウンロードする方が良いですか、それともEmbarcadero(DelphiのCDにある)によって提供されるバージョン(存在する場合)はDelphiとよりよく統合されますか?
更新:
CDなしのDelphi(ダウンロード可能なバージョン)を購入しました。たぶんそれはCDで提供されるバージョンよりも小さいので、DUnitのようないくつかのツールは含まれていませんか?
delphi - DUnitを使用してどのようなテストケースを作成できますか?
Delphi7を使用しています。
私はDUnitを初めて使用しますが、DUnitを使用してどのようなテストケースを作成でき、どのように作成できるかが疑問です(これは私にとって非常に重要です)。
特定のボタンクリックイベントのテストケースを作成することは可能ですか?その場合、それぞれのデータベース関連のプロシージャまたは関数でより多くのユニットが呼び出されるコードの大きなセットが使用される可能性があるためです。その場合、テストケースを作成するための最良のアプローチは何ですか?(可能であれば、例や紹介は私にとって大きな助けになるでしょう)。
なぜなら、サンプルのDUnitプロジェクトでは、アプリケーションコードのセット全体を記述できないためです。これは、場合によっては、他のフォームを作成する必要があるためです。
だから、私の疑問は、そのような状況でテストケースをどのように書くか、そして一般的に、DUnitを使用してどのような種類のテストケースを書くことができるか、そして重要なことにどのように書くかです。
delphi - Delphi で他の .exe データにアクセスする最も簡単な方法は何ですか?
Delphi 2010 に付属の DUnit を使用して、適切な OO プラクティス (例: ビジネス ロジックをクラス/ユニットに分離する) に従わない 1000 万の LOC プロジェクトにいくつかの基本的な自動テストを実装しようとしています。通常のユニットは実行できません。ビジネス ロジックの各部分は相互に依存する数十のユニットにまたがっているため、このプロジェクトでテストを行っていますが、これらのユニットの「グループ」は、特定の「メイン ビジネス ロジック画面」を中心にしています (例: すべての請求書ロジック関連のユニットは、これらの画面はクラスであるため、単体テストの代わりに「メイン ビジネス ロジック画面クラスのテスト」を行うことができますが、これらの「メイン画面」には、プロセスの起動時に作成される多くのものがまだ必要です。
だから私は両方が必要です:
- 悪いプロジェクトのスタートアップを実行できるようにする
- そのオブジェクトにアクセスできる
悪いプロジェクトには、オブジェクトにアクセスするためにキャストできるポインターを返すエクスポートされた関数が既にいくつかありますが、どちらの方法でも呼び出すことができません。
問題のあるプロジェクトをテスト プロセスの子プロセスとして作成すると、スタートアップ コードは正常に実行されますが、複雑な IPC メソッドや問題のあるプロジェクトの構造を大幅に変更しない限り、エクスポートされた関数を呼び出す方法が見つかりません。
悪いプロジェクトの .exe を LoadLibrary 関数のように dll としてロードした場合、悪いプロジェクトによってエクスポートされた関数を呼び出すと、この単純な手順でもアクセス違反やセグメンテーション エラーが発生します。
どうすれば両方を行うことができますか?
delphi - FreeOnTerminate = True を使用した TThread の Delphi 単体テスト
FreeOnTerminate = True の場合に TThread の子孫の Delphi DUnit テストを作成する最良の方法は何ですか? TThread の子孫は、テストする必要がある参照を返しますが、スレッドがテストで終了するのを待つ方法がわかりません...
どんなアイデアでも大歓迎です。
デルファイ 2010。
delphi - DUnit テストで ToolsAPI の IOTAEditPosition を実装する実際のオブジェクトを使用できますか?
IDE でのソース コード編集を強化するための一連のウィザードを作成しています。テキスト操作はIOTAEditPosition
から取得しBorlandIDEServices
ます。
テキスト操作が正しく行われたと断言できるように、メソッドに対するテストを自動化するにはどうすればよいですか? IOTAEditPosition
実稼働コードの同じ環境をシミュレートしたいので、スタブ化またはモック化することはできません (実際にIOTAEditPosition
は、インデント、改行を使用していくつかの自動作業を行います。文字が識別子または単語区切り文字であるかどうかを確認するなどのいくつかの方法があります、テキスト検索メカニズムなど、実際には IDE エディターに固有の多くのことを行います)。
この場合、 Unit vs Integration testのような純粋主義は気にしません。必要に応じて統合テストと呼んでください。実際、私のコードは完全に依存しており、の動作に非常に敏感でIOTAEditPosition
あり、それらを一緒にテストする必要があります。
もう少しわかりやすくするために。私の考えでは、理想的なアサーションは次のようなものです。
実際の基礎となるテキスト操作は IOTAEditPosition によって行われるため、実稼働コードで取得したものとまったく同じように動作する実装が必要です。