問題タブ [flexunit4]
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.
flash - FlexUnit 4 を使用してリンク リスト オブジェクト プールをテストするにはどうすればよいですか?
AS3 でスタックを基本データ構造として使用するオブジェクト プールを作成しています (リンク リストで実装)。私は FlexUnit を初めて使用しますが、クラスの単体テストをいくつか行いたいと思っています (新しいプロジェクトでそれらをテストするのはせいぜい面倒なので)。
ただし、クラス メンバーが公開されていないため、変数を追跡しようとしていくつかの問題に遭遇しました。クラスのメンバーにのみ影響するプライベート メソッドをテストできるようにしたいと考えています。(例には、リストの作成、スタックからのノードのポップ、ノードのスタックへの押し戻しなどが含まれます。)
FlexUnit のプラクティスでは、クラスに対してテスト メソッドを実行する別のテスト クラスがあると述べているようです。ただし、これらのクラスはプライベート変数にアクセスできないため、単体テストのためだけにゲッターとセッターを作成する必要はありません。これを回避する方法はありますか?テスト ケース クラスではなく、Python スタイルのクラス自体にテスト メソッドを追加できますか?
これが以前に尋ねられた場合は申し訳ありません。私はこれが初めてです。私はあなたの助けに感謝します。コード スニペットなどで明確にする必要がある場合はお知らせください。
編集: 私のデータ構造は実際にはスタックであり、単なる一般的なリンク リストではないことに気付きました。これを反映するように質問を更新しました。
actionscript-3 - 複雑な動作をテストするときに、単体テストで複数のアサーションを使用しても問題ありませんか?
これが私の具体的なシナリオです。
ArcGIS APIforFlex内でクラスQueryQueue
をラップするクラスがあります。QueryTask
これにより、実行のために複数のクエリタスクを簡単にキューに入れることができます。呼び出しQueryQueue.execute()
は、キュー内のすべてのタスクを繰り返し処理し、それらのexecuteメソッドを呼び出します。
すべての結果が受信されて処理されるQueryQueue
と、完了したイベントがディスパッチされます。私のクラスへのインターフェースはとてもシンプルです。
QueryQueue.execute
メソッドが成功したと見なされるには、いくつかのことが発生する必要があります。
task.execute
各クエリタスクで1回だけ呼び出す必要がありますinProgress = true
結果が保留中の間inProgress = false
結果が処理されたときcompleted
結果が処理されたときにディスパッチされますcanceled
呼び出されることはありません- キュー内で実行される処理は、クエリ結果を正しく処理およびパッケージ化します
私が苦労しているのは、これらのテストを読み取り可能で論理的で保守可能なテストに分割することです。
論理的には、1つの状態、つまり成功した実行状態をテストしています。これは、上記の#1から#6をアサートする1つの単体テストが真であることを示唆します。
ただし、テストの名前は、テストに合格したと見なされるために真でなければならないすべてのことを説明しているわけではないため、有益ではありません。
オンライン(こことprogrammers.stackexchange.comを含む)を読むと、単体テストには(ガイドラインとして)1つのアサーションのみが必要であると主張するかなりの規模のキャンプがあります。その結果、テストが失敗した場合、何が失敗したかを正確に知ることができます(つまり、inProgressがtrueに設定されていない、完了が複数回表示されるなど)。
これは、テストで多くのコードが繰り返されることになる可能性がありますが、適切なメソッドを使用することで最小限に抑えることができsetup
ますteardown
。
この質問は他の質問と似ていますが、検証が必要な複数の状態と動作を示す複雑な単体テストシナリオの適切な表現であると思うため、この特定のシナリオに対する回答を探しています。他の質問の多くには、残念ながら、例がないか、例が複雑な状態と動作を示していません。
flex4 - FlexUnit 4 エラー:adobe:TestRunnerBase
FlexUnit 4 で解決策が見つからないエラーが発生します。エラーは次のとおりです。
コンポーネントの実装に解決できませんでした。
これが私のサンプルアプリです (私は FlashBuilder 4 Premium を使用しているので、必要な SWC はすべて既にインストールされていると仮定しています):
私が見つけた 1 つのアイデアは、FlexUnit サポート サイトからのもので、私の名前空間が間違っていない (間違っていない) 場合、次のファイルがありません: FlexUnit4UIListener.swc
FlashBuilder 4 と Flex 4.5.1 SDK を使用しています。私のビルド パスでは、次の 3 つのファイルとその SWC を参照しています。
C:\Program Files\Adobe\Adobe Flash Builder 4 Plug-in\eclipse\plugins\com.adobe.flexbuilder.flexunit_4.0.1.277662\flexunitframework\libs\version4libs{Common,FlexProject, and locale/version4locale}
プロジェクトの libs フォルダーにも SWC を追加する必要がありますか? 何が欠けている可能性がありますか?
actionscript-3 - FlexUnit: ファイル アップロードの単体テストはできますか?
FlexUnit を使用してファイルのアップロードと削除の単体テストを行うことはできますか? これらのアクションは単体テストの良い例ですか?
私は単体テストに少し慣れておらず、UI のどの部分が単体テストに適しているかを理解しようとしています。
役立つヒントをありがとう。
actionscript-3 - パラメータ化されたテストの記述は次の場合に失敗します:テストケースのパラメータの取得中にエラーが発生しました:パラメータ化されたフィールドの値が無効になります
テストデータに非常に大きな文字列を必要とする単体テストがいくつかあります。テスト自体でHTML文字列を宣言したくないのは、実際のテストがわかりにくくなる可能性があるためです。むしろ、テストごとに外部リソースからこれらの文字列をロードしたいと思います。
異なるデータセットで同じテストを実行していませんが、パラメーター化されたテストは実行可能なソリューションのようです。ただし、次の例を機能させるのに問題があります。
注:このコードは、 TestNGの例に基づいています。
このテストを実行すると、次のエラーメッセージが表示されます。
エラー:テストケースのパラメーターの取得中にエラーが発生しました:パラメーター化されたフィールドの値が無効になりますhtmlContent:null
この問題の解決策は何でしょうか?
actionscript-3 - Mock4asとMockito-flex
私はactionscriptに少し慣れていませんが、他のOO言語(java / C#)からactionscript環境への優れたプログラミング手法を調査していることに気づきました。私はMock4asとmockito-flexを購入し、両方を使用することに興味がありました。
誰かがどちらかを使用して良い/悪い経験をしたことがありますか?
actionscript-3 - 大規模なアプリケーションの複数のモジュールをテストするために同じ前提条件データを使用する方法は?
私はアクション スクリプトでカスタマイズ ゲームに取り組んでいます。アプリケーションにはいくつかのモジュールがあります。アプリケーションはデータ集約的です。アプリケーションを起動するには、他の多くの swf や JSON などをロードする必要があります。(今のところ) UI ビットをテストしたくありません。私がテストしたいのは:
- モジュールのクラッシュなし
- 私は正気の答えを得る
UI や視覚的な異常は気にしません。
モジュール用に個別のテスト スイートと個別のテスト クラスを作成したいと考えています。より組織的になるために。
質問:
最も単純な機能をテストするには、X、Y、Z データをロードする必要があります。X、Y、Z データはすべてのモジュールに共通です。
さまざまなテスト クラスとスイートを作成し、データを 1 回だけプリロードして、そのデータのコピーをテスト全体で使用するにはどうすればよいですか。ほとんどのデータは、テストの過程で変更されません。
actionscript-3 - Mockolate-同じ引数を使用してモックで同じメソッドを呼び出すが、異なる結果を返す
AS3でのテスト用のモックを作成するためにMockolateとflexユニット4を使用しています。同じ引数を使用してモックで同じメソッドを複数回呼び出し、毎回異なる結果を返したい。基本的な例は次のとおりです。
これにより、次のようになります。
そしてエラー:
私が欲しいのは
例外はありません。つまり、テストに合格します。
私は次のようないくつかの選択肢を試しました:
と他の人は役に立たない。確かに私はここで何か簡単なものが欠けています。これは簡単なはずのようです。
みんなありがとう、
テオ。
git - Adobe AIR アプリ用の Jenkins CI サーバーのセットアップ (FlexUnit4 と GitHub をリポジトリとして使用)
Robotlegs 1.5.2 で書かれた Adobe AIR アプリがあります。使用する単体テスト フレームワークは FlexUnit4 です。CakePHP 2.x と PHPUnit の単体テスト フレームワークで記述されたプロジェクト用の Jenkins CI セットアップが既にあります。私の Jenkins CI サーバーは、Rackspace の Ubuntu 11.10 にあります。
Adobe AIR アプリ プロジェクトに同じ Jenkins サーバーを使用する予定です。私は git と github を使用しており、maven に切り替えるつもりはありません。このチュートリアルを見つけましたが、非常に威圧的に見え、2011 年に書かれました。
他に方法があるのだろうか、それともこれが最善の方法なのだろうか。Adobe AIR アプリの展開前に、FlexUnit4 テストも実行する Jenkins で CIをセットアップする方法の詳細な説明が必要です。
ユーザーがダウンロードできるように、Adobe AIR アプリがサーバーにデプロイされます。
過去 6 か月間に 1 回以上セットアップした経験のある方からの回答を希望します。
maven - FlexUnit からのコード カバレッジを Sonar で動作させるにはどうすればよいですか?
状況
Flex-Mojos を使用して、Maven ビルド ジョブからFlexUnitによって生成されたコード カバレッジ レポートをSonarに表示させようとしていますが、うまくいきません。
ビルド出力
その結果、ダッシュボードには常に次のように表示されます (左側の列):
(いいえ、単体テストは 90 分以上実行されず、16 秒以上実行されません。何が問題なのかわかりません)
Sonar 関連のコンソール出力は次のとおりです。
したがって、すべて正常に動作しているようです (Cobertura 以外のファイルが見つからないエラーはなく、どのような方法でも取り除くことができないようです。解析例外などはありません)。
ビルドのセットアップ
プロジェクトのpom.xml
ビルドに使用される は次のようになります。
Sonar を実行するいくつかの方法を試しました。
dynamicAnalysis=reuseReports
+mvn clean install
+mvn sonar:sonar
dynamicAnalysis=true
+mvn clean install sonar:sonar -Dmaven.test.failure.ignore=true
dynamicAnalysis=true
+mvn clean install -DskipTests=true
+ (<-- は機能しません: このシナリオでは、何らかの理由で、Flex-Mojos のゴールmvn sonar:sonar
の実行中に単体テストが NullPointerException で実行に失敗します)。test-run
Sonar ダッシュボードでカバレッジ結果を表示する方法はありますか? 標準の Surefire レポートを表示するには、追加のプラグイン (Emma、Clover など) が必要ですか? これが機能しない既知の問題はありますか? 私は何か間違ったことをしていますか?
アップデート
Sonar-Runner で Sonar を実行してみました。興味深いことに、ダッシュボードはコード カバレッジ ウィジェットを完全に削除します。ランナーのコンソール出力を確認すると、ランナーがFlexSurefireSensor
( sonar:sonar
Maven ゴールが実行する) を実行しないことが示されます。
sonar-project.properties
ファイルには次が含まれます。
私はそれにmvn clean install
続いてそれを実行していsonar-runner
ます。