0

この記事とテストに関する他のいくつかの記事を読みましたが、理論は理解できましたが、実際の .NET プロジェクトでの実装については理解していません。

私のプロジェクトは複数の (機能) アセンブリに分解されており、それをテストしたいと考えています。私のメソッドとプロパティのほとんどはプライベートまたは内部であるため、テスト アセンブリからアクセスできません。私はパブリックなもののみをテストします(アセンブリのすべてのパスをテストするため)。

データベースのような他のサービスや Microsoft HPC のような他のサービスを使用しているため、これらのテストは単体テストではないため、私が行っているテストについて疑問に思っています... 私は正しいですか? 私の意見では、単体テストを行いたい場合は、プライベート メソッドとプロパティをテストする必要がありますが、これには物議を醸しています。

私はNunitを使用していますが、統合テストと単体テストをフレームワークに入れることができるかどうか疑問に思っていましたか?

私がチェックアウトできる単体テストと受け入れテストを備えた .NET オープンソース プロジェクトはありますか?

ありがとう

4

2 に答える 2

1

たくさんの質問...

public/private : 通常、パブリック インターフェイスを介してのみテストする必要があります。プライベート メソッドをテストする場合は、おそらく、クラスを 2 つに分割し、プライベート メソッドをパブリック (または内部) にする必要があることを示しています。SRP。内部メソッドをテストするには、この回答を確認してください

テストを書くとき、システムの振る舞いをテストしたいと思うでしょう。動作については、エンド ユーザーから見たシステムの動作を考えてください (ただし、他にも興味深い利害関係者が存在する可能性があります)。これを行うと、private メソッドをテストしたいという問題に遭遇することはほとんどありません。

単体テスト統合テストの違いは議論されていますが、私の意見では、それほど重要な議論ではありません。もっと重要なことは、テストの目的は何ですか?と自問することです。

システムをテストすることが目的の場合 (外部システムとの統合などではなく)、テストは反復可能で高速であり、所有していないものを含めないようにする必要があります。反復可能とは、テストが一度失敗した場合、常に失敗する必要があることを意味します (ランダム性はありません)。高速とは、すべてのテストを実行してからのフィードバックをあまり長く待つ必要がないことを意味します。あなたが所有しているものとは、組織外で行われた変更が原因でテストが失敗し始めてはならないということです。これを達成し、データベースや Microsoft HPC への呼び出しを含めることができる場合、そうしない理由はありません。

NUnitのさまざまなテスト タイプを区別するには、 categoryを使用できます。ほとんどのツールでは、これらに基づいてサブセットを実行できます。

于 2013-08-15T11:13:20.500 に答える
0

申し訳ありませんが、Torbjörnsの回答に介入する必要があります。

単体テストと統合テストには大きな違いがあり、カテゴリだけでは処理できません。統合テストで必要なすべての参照または依存関係について考えてみてください。ビルド マシンで統合テストを実行しようとしたことのある人なら誰でも、その話をすることができます。

経験則:単体テストと統合テストを混同しないでください。NUnit などの同じテスト ランナーを再利用できますが、テスト プロジェクトを分割する必要があります。

PS: TDD ジャーニーへようこそ!

于 2016-07-20T22:26:54.547 に答える