問題タブ [tdd]

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 投票する
17 に答える
1114 参照

unit-testing - 専門的なプロジェクトで単体テストを使用していますか?

私たちはプロジェクトの新しい部分を開始しようとしていますが、単体テストにはあまり関心がないようです (そして、彼らは TDD を経験したようには感じません)。これはほぼ不可欠であり、メンテナンスがはるかに簡単になると思います。それで、あなたの意見は何ですか?

ありがとう

ところで: これは言語にとらわれない質問ですが、新しいプロジェクトは Java です。

0 投票する
5 に答える
986 参照

nunit - savefileメソッドをテストするためにNUnitでテストメソッドを書く方法は?

オブジェクトを xml に保存するための savefile メソッドを作成しました。しかし、NUnit でメソッドをテストする方法がわかりません。サンプル ファイルを手動で作成し、ファイル間で文字列を比較する必要がありますか? メソッドをテストするためのより良い方法はありますか?

ご回答有難うございます。

0 投票する
8 に答える
975 参照

unit-testing - API のラッパーをテストするときに、単体テストで API に直接触れるべきですか?

FTP サーバー API のラッパーをテストするいくつかの単体テストを作成しました

単体テストと FTP サーバーの両方が同じマシン上にあります。

ラッパー API はプラットフォームにデプロイされ、リモート処理と Web サービスの両方のシナリオで使用されます。ラッパー API は基本的に XML メッセージを使用して、ユーザーの追加/削除/更新、パスワードの変更、アクセス許可の変更などのタスクを実行します。

単体テストでは、ユーザーを仮想ドメインに追加するなど、API に送信する XML メッセージを作成します。API が機能し、操作が成功したか失敗したかに関するステータス情報 (エラー コード、検証の失敗など) を含む応答を返します。

API ラッパー コードが本当に正しいことをしたかどうか (応答が成功を示した場合) を検証するために、FTP サーバーの COM API を呼び出し、そのストアを直接クエリして、たとえばユーザー アカウントを作成するときに、ユーザー アカウントが本当に正しいことをしたかどうかを確認します。作成されます。

これって臭いですか?

更新 1: @Jeremy/Nick: ラッパーがテストの焦点であり、FTP サーバーとその COM API はサード パーティ製品であり、おそらく十分にテストされ、安定しています。ラッパー API は、XML メッセージを解析してから、FTP サーバーの API を呼び出す必要があります。ユーザー アカウントの特定のプロパティがラッパーによって正しく設定されていることを確認するにはどうすればよいでしょうか。これはばかげたケースかもしれません。たとえば、ラッパー コードのタイプミスが原因で、FTP アカウントのプロパティまたは属性が正しく設定されていません。アップロードとダウンロードの速度制限の設定が良い例です。これらはラッパー コードで置き換えられる場合があります。

更新 2:回答ありがとうございます。モックの使用を提案した人たちには、それは私の頭をよぎりましたが、ライトはまだそこにスイッチを入れておらず、FTPサーバーのモックでラッパーを動作させる方法を理解するのにまだ苦労しています. . モックはどこに存在し、そのモックのインスタンスをラッパー API に渡して、COM API を呼び出す代わりに使用しますか? 私はあざけることは知っていますが、ほとんどの例とチュートリアルが非常に抽象的で (恥ずかしいことに) 理解できないことに気づいているため、頭を悩ませています。

0 投票する
7 に答える
569 参照

c++ - C/C++ を使用した単体テスト: 教訓、覚えておくべきことは?

C/C++ を使用した単体テスト: 単体テストを行ったことがない人や、Java/Junit から来た人に何を教えていますか?

あなたの観点から見て、多くの時間やストレス (特に C/C++ に関して) を節約する最も重要な教訓/覚えておく/練習することは何ですか?

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

ruby-on-rails - 塹壕からの Shoulda テスト ワークフロー

今日、Rails (Rails だけでなく) 開発の世界では、誰もが TDD (BDD) について話しています。それに関する多くの優れた一般情報を簡単に見つけることができます。この目的に使用できるツールがかなりあり、それらの使用方法の (良い) 例がたくさんあります。

今、私はすでに電車に乗っています。私はこのアイデアが気に入り (以前は TDD を使用したことがありませんでした)、Shoulda を使用することにしました (私には非常に理解しやすいように思われるため)。私はたくさんの例を読み、いくつかの最初のテストを行いました。私の問題はこれです:私はそれを正しく行っているかどうかわかりません。前述したように、ネット上には小さな例がたくさんありますが、Shoulda を使用した TDD の全体的なワークフローをカバーする包括的なガイドは見つかりませんでした。

ここに私の質問があります:

  • Shoulda を使用して TDD を実践する方法は何ですか? (1 回の反復での通常のワークフローは何ですか?)
  • 他にどのようなツールを使用していますか (Shoulda 自体を除く)?
  • 他のヒントはありますか?
0 投票する
1 に答える
227 参照

visual-studio-2008 - デバッグを使用して、同じソリューションのテスト プロジェクトから Web アプリケーションのクラスにステップ インするにはどうすればよいでしょうか?

NUnit とテスト プロジェクトを使用する場合、Web アプリケーションでテストしているクラスにステップ インする方法を見つけることができませんでした。Visual Studio 2008 用の TestDriven.NET アドインを使用しています。テスト プロジェクトでブレークポイントにヒットすることはできますが、テスト中の Web アプリ クラスにステップ インすることはできません。

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

unit-testing - GWT 単体テスト TDD とツール

私は gwt を使い始めたばかりで、これまでのところとてもうまくいっていますが、いくつかのサンプル コードを読んだ後、高レベルのテスト カバレッジが必要なのだろうか? (ほとんどのコードは宣言的であり、いくつかの属性を追加することがわかります。チェックの意味がわかるので、特定の属性はそこにありますが、すべてではありません)

また、GWTを使用したTDDingの落とし穴について何か知りたいです

私はEclipseを使用しているので、GWTの特定のアドインに本当に満足している場合は、それについて聞いてうれしいです。

編集:私は非常に幅広い質問をしているかもしれませんが、jquery/extJs/prototype/scriptaculous で nvelocity ビューを持つことから得られる情報は少しでも役立ちます。これは少し異なります

0 投票する
6 に答える
2393 参照

java - ローカル変数としてインスタンス化されたクラスをモックする方法

データベースに対して操作を実行するためにいくつかのDAOクラスを呼び出すビジネスメソッドのテストを書いています。

このメソッドは、最初にDataSourceオブジェクトからJDBC接続を取得します。同じ接続がすべてのDAOインスタンスに渡されるため、これを使用してトランザクションを制御できます。したがって、すべてが正しく機能する場合は、接続オブジェクトに対してcommit()を呼び出す必要があります。

commit()が呼び出されるかどうかをテストしたいので、それをチェックする期待値(JMockを使用しています)を作成することを考えました。しかし、Connectionクラスは私のBusinessクラスの直接の隣人ではないので、これを行う方法がわかりません。

誰かがこれを克服する方法を知っていますか?このためのいくつかのJMock機能、またはこれを克服することを可能にするいくつかの代替設計がありますか?

ありがとう

0 投票する
12 に答える
13494 参照

c++ - ポリモーフィズムまたは条件文は、より良い設計を促進しますか?

私は最近、よりテスト可能なコードを書くためのガイドラインについて、グーグルテストブログでこのエントリに出くわしました。私はこの時点まで著者に同意していました:

条件文よりもポリモーフィズムを優先する:switchステートメントが表示された場合は、ポリモーフィズムを考える必要があります。クラスの多くの場所で同じ条件が繰り返されている場合は、ポリモーフィズムをもう一度考える必要があります。ポリモーフィズムは、複雑なクラスをいくつかのより小さな単純なクラスに分割します。これらのクラスは、コードのどの部分が関連していて、一緒に実行されるかを明確に定義します。単純な/小さいクラスの方がテストが簡単なので、これはテストに役立ちます。

頭を包むことはできません。RTTI(または場合によってはDIY-RTTI)の代わりにポリモーフィズムを使用することは理解できますが、それは実稼働コードで実際に効果的に使用されているとは想像できないほど広いステートメントのようです。むしろ、コードを数十の個別のクラスに分割するよりも、switchステートメントを持つメソッドにテストケースを追加する方が簡単だと思います。

また、ポリモーフィズムは他のあらゆる種類の微妙なバグや設計上の問題を引き起こす可能性があるという印象を受けていたので、ここでのトレードオフに価値があるかどうかを知りたいと思います。誰かがこのテストガイドラインの意味を正確に説明できますか?

0 投票する
7 に答える
609 参照

tdd - ソフトウェアショップをTDDに変換する方法は?

私が働いている店の中でTDD開発を推進したいと思っています。向こうの多くの先輩はユニットテストで働いていなかったか、データベースにぶつかっていたユニットテストをしました。

私はいくつかの良い議論、トレーニングのための本、移行を容易にするための可能なコーチを持ってきたいです。