2

私は単体テストから始めており、すでに実装されているいくつかのクラスにテストを書きたいと思っています。

このプロジェクトではインターフェース用に開発しており、単体テストを作成するときに役立つと思います。しかし、インターフェースの実装は内部としてマークされており、実装をテストするためにこれまでに見つけた最良のソリューションは次のとおりです。

#if DEBUG
public class CreateRequestService : DomainServiceBase, ICreateRequestService
#else
internal class CreateRequestService : DomainServiceBase, ICreateRequestService
#endif
{

それについてどう思いますか?ユニットテストでautofacを使用する方法を理解しようとしていましたが、それは私にとって非常ににおいがしました。それは良い習慣ですか?

アップデート

使用しているツールを指定するのを忘れました。私はC#4.5、NUnit、Moqを使用しています!

4

1 に答える 1

4

私は数年前、そのようなクラスとインターフェースを非表示にしていました。それをやめ、私がライブラリを開発している場合にのみそれを使用します。

.NETを使用している場合は、「フレンドアセンブリ」を作成できます。このようにして、単体テストアセンブリは本番アセンブリの内部メンバーを確認できます。ただし、そのためには、本番アセンブリのコードにアクセスできる必要があります(アセンブリ属性を追加する必要があります)。

[assembly: InternalsVisibleTo("AssemblyB")]

http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx

もう1つのオプションは、クラスとインターフェイスをパブリックにして、それらをに移動することです。

 MyProduct.xxx.yyy.Internal 

名前空間。そうすれば、テストを行うことができ、チームのすべてのメンバーは、それらのメンバーを使用してはならないことを知っています。

于 2013-03-10T22:41:11.533 に答える