問題タブ [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.
c# - インターフェイスの Moq'ing
この回答をグーグル/読んでいる間、ここでも質問すると思いました。
SDK のラッパーであるクラスがあります。このクラスは ILoader オブジェクトを受け入れ、ILoader オブジェクトを使用して、ISmallBusinessInstance オブジェクトにキャストされる ISBAObject を作成します。私は単に Moq を使用してこの動作を模倣しようとしています。
コンパイラ エラーの読み取り: エラー 1 'Moq.Language.IReturns.Returns(Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)' に一致する最適なオーバーロードされたメソッドには、無効な引数がいくつかあります
ここで何が起こっているのですか?ISbaObjects の Mock が問題なく返されることを期待していました。
c# - 既存のコードをテスト駆動開発に移動する
最近この開発方法を発見したので、私はそれがかなり良い方法論だと思っています。したがって、最初のプロジェクトでは、小さなDLLに相当するコード(C#.NETで、その価値があるもの)があり、このコードの一連のテストを作成したいのですが、その方法と方法について少し迷っています。どこから始めれば。
私はNUnitとVS2008を使用しています。どのような種類のクラスから始めるか、何のためにテストを書くか、そしてテストベースの開発にコードを移動する方法に関するヒントをいただければ幸いです。
c# - C# を使用して TDD でプログラミングを開始するための最適な手順は何ですか?
TDD を使い始めたいのですが、どこから始めればよいかわかりません。.NET (C#/ASP.NET) でコーディングしています。
tdd - 擬似コードプログラミングプロセスとテスト駆動開発
Code Complete 2をまだ読んでいない人にとって、擬似コードプログラミングプロセスは、基本的に、最初に平易な英語でルーチンを記述し、次にそれをより詳細な擬似コードに、そして最後にコードに改訂することによってルーチンを設計する方法です。これの主な利点は、システムをボトムアップではなくトップダウンで構築し、それによって別個のレイヤーでクリーンなAPIを進化させることにより、適切なレベルの抽象化を維持できるようにすることです。TDDは、テストに合格するために最低限のことを行うことに重点を置きすぎており、事前の設計をほとんど奨励していないため、これでは効果が低いことがわかります。また、不安定なコード(常にリファクタリングされているコード)の一連の単体テストを維持することは非常に難しいこともわかりました。これは、通常、1回または2回だけ必要なルーチンの単体テストが12個ある場合だからです。リファクタリングを行う場合(たとえば、メソッドのシグネチャを変更する場合)、行う作業のほとんどは、製品コードではなくテストの更新です。コンポーネントのコードが少し安定した後で、単体テストを追加することを好みます。
私の質問は、両方のアプローチを試した人のうち、どちらが好きですか?
language-agnostic - テストケース、「いつ」、「何を」、「なぜ」?
テストベースの開発は初めてなので、この質問は私を悩ませてきました。多すぎるとはどのくらいですか?何をテストし、どのようにテストし、なぜテストする必要があるのか? 与えられた例は NUnit を使用した C# のものですが、質問自体は言語に依存しないと思います。
これは私自身の現在の2つの例であり、一般的なリストオブジェクトのテストです(文字列でテストされ、初期化関数は3つのアイテムを追加します{"Foo", "Bar", "Baz"}
):
コードはかなり自己コメントなので、何が起こっているのかについては触れませんが、この種のことはやりすぎですか? Add()
もちろん、Remove()
個別にテストされるので、これらの種類のテストではどのレベルに行く必要がありますか? 私はこれらの種類のテストを受ける必要がありますか?
tdd - 「カバーされたコード」対「テストされたコード」?
現在のコード プロジェクトを TDD に変換していて、あることに気付きました。
このコードをテストし、十分なテストがあるかどうかを判断するためにコード カバレッジ ツールに依存する場合、2 つの危険が見られます。
Test
イベントが発生するかどうかをテストする必要があります。これを忘れてしまうと、コード カバレッジ ツールだけではわかりません。- すぐに他の人に行きます。
この目的のために、スタートアップ関数にイベント ハンドラーを追加して、次のようにしました。
eventCount
これで、イベントが呼び出された場合、イベントが呼び出された回数を簡単に確認できます。かなりきれい。ここで、どのテストでも検出されない小さなバグを突き抜けました。つまり、SomeFunction()
イベントを呼び出そうとする前に、イベントにハンドラーがあるかどうかをチェックしません。これにより、null 逆参照が発生しますが、デフォルトですべてのテストにイベント ハンドラーがアタッチされているため、テストによってキャッチされることはありません。ただし、コード カバレッジ ツールは依然として完全なカバレッジを報告します。
これは手元にある私の「実世界の例」にすぎませんが、コードの 100% の「カバレッジ」があっても、これらの種類のエラーの多くがすり抜けてしまう可能性があることに気付きました。 . テストを書くとき、そのようなツールによって報告されたカバレッジを一粒の塩で取る必要がありますか? これらの穴を塞ぐ他の種類のツールはありますか?
php - PHPSimpleTestフレームワークを使用してデータベーステストをどのように設定しますか
PHPベースの単体テストフレームワークであるSimpleTestを使用しています。データベースからのWebサイトコメントの保存と取得を処理する新しいコードをテストしています。データベースアクセスコードをテストするためにプロジェクトを構造化する方法に迷っています。
PHPアプリケーションでdbコードをテストするためのベストプラクティスに関する提案を探しています。例は本当に素晴らしいです。さらに読むためのサイトは素晴らしいです。
よろしくお願いします。:)
c# - パラメータの属性変更をモックする-Moqを使用
単体テストができるように、Moqを使用してリポジトリレイヤーをモックしています。
リポジトリレイヤーのInsertメソッドは、db挿入が成功すると、エンティティのIdプロパティを更新します。
Insertメソッドが呼び出されたときにエンティティのIdプロパティを更新するようにmoqを構成するにはどうすればよいですか?
リポジトリコード:-
単体テスト:-
ContractServiceクラス(WCFサービスコントラクト)からの実装スニペット。
この情報が少し不足している可能性があることをお詫び申し上げます。私は今日、moqとモックフレームワークを学び始めました。交流
unit-testing - 機能テストでは不十分なのはなぜですか?ユニットテストは何を提供しますか?
ユニットテストがすべて必要であるか重要であることに同意しなかった私のリード開発者とちょうど会話をしました。彼の見解では、内部リファクタリング(インターフェースの変更など)によってテストを書き直したり、見直したりする必要がなくなるため、コードカバレッジが十分に高い機能テストで十分です。
説明してみましたが、あまり遠くまで行かなかったので、もっと上手くやれると思いました。;-) それで...
機能テストが提供しない単体テストコードのいくつかの正当な理由は何ですか?あなたが持っているのが機能テストだけだとしたら、どんな危険がありますか?
編集#1すべての素晴らしい答えをありがとう。機能テストとは、製品全体のテストだけでなく、製品内のモジュールのテストでもあり、必要に応じてモックを使用した単体テストの低レベルではないことを付け加えたいと思います。機能テストは自動で継続的に実行されますが、単体テストよりも時間がかかります(これは単体テストの大きな利点の1つです)。
私はレンガと家の例が好きです。私のリード開発者が言っているのは、家の壁をテストするだけで十分だと思います。個々のレンガをテストする必要はありません... :-)
wpf - WPF の取り組みで使用したデザイン パターンと、気に入ったデザイン パターンを教えてください。
私は何人かの人々によって提案されている Model-View-ViewModel パターンを見てきました (特に John Gossman は、この投稿とこのポッドキャストを見てください) 。 ..そして、彼らはどこに価値を追加しますか?
私も出くわしました:
- モデル - ビュー - ビューモデル
- プレゼンテーション モデル
- DataModel-View-ViewModel
- Prism のパターン(現在は WPF の複合アプリケーション ガイダンスとして知られています)
上記のことや、まだ発見していないことについて活発な議論をしたいと思います。