私はちょうどプライベートコンストラクタを使ってクラスの単体テストを行う必要があります。C#プライベートコンストラクタを持つユニットテストクラスですか?
ここでは、すべてのメソッドも静的でない場合にクラスを初期化せずに単体テストを行う方法を説明します。
プライベートコンストラクタを持つクラスでユニットテスト(リフレクションなし)を行う方法はありますか?
私はちょうどプライベートコンストラクタを使ってクラスの単体テストを行う必要があります。C#プライベートコンストラクタを持つユニットテストクラスですか?
ここでは、すべてのメソッドも静的でない場合にクラスを初期化せずに単体テストを行う方法を説明します。
プライベートコンストラクタを持つクラスでユニットテスト(リフレクションなし)を行う方法はありますか?
このクラスにプライベートコンストラクタがある場合は、これを公開して使用しますか?そうでない場合は、それを単体テストするのが最善であるかもしれません。この場合、パブリックなコードは、このコードを呼び出すことによってこのコードをテストする必要があります。
ユニットテストでは、たとえばアプリケーション層の間でコードをインターフェイスすることで、何が一般に使用されるべきかをテストします。入力を受け、私はこの出力が欲しい。それは本当に単体テストのことです。ユニットテストは、実際のメソッドに何があるか気にしません。あなたが望むものを返す限り、望ましい行動を実行し、あなたはパスを持っています。
まあ、クラス内には何も公開されていません。 –
@WinCoderそれでは、どうやって使っていますか? – bas
今日、私は明確化のために尋ねたところ、コードの誤りを正しく修正しなければならないと言われました。物事を公開するように.... –
パブリックAPIでテストする必要があります。テストするクラスがインスタンス化されて使用される方法は、である必要があります。
ユニットテストは、通常、コードがそのデザインを満たし、意図どおりに動作するように記述され実行されます。
インスタンスを作成できないプライベートコンストラクタのみを作成するnon-static
クラスを作成すると、決して役に立たない可能性があります。つまり、決してUnit Testable
ではありません。
テスト可能なユニットであるために:あなたは、クラスのインスタンスを作成することができるはず
var anInstance = (YourPrivateClass)Activator.CreateInstance(typeof(YourPrivateClass), true);
この:あなたは、クラスを公開することができない場合、あなたはまだそれのインスタンスをこのように作成することで簡単にテストすることができFriend Assembly
としてあなたのアセンブリを作ることによって、内部機能をテストすることができ あなたがあなたのクラスのインスタンスを与えて、あなたがそれを埋め込むことができます。
もう1つの有用なテストビットは、内部メソッド(プライベートではない)がある場合です。内部クラスをテストクラスに表示させることでアクセスできます。あなたは、内部メソッドを持つクラスのassemblyinfo.csに次の行を追加します。
[assembly: InternalsVisibleTo("YourSolution.Tests")]
それはシングルトンであるかもしれない、あなたはクラスのpublicコンストラクタを望んでいません。 を持つコンストラクタを飾る: [ExcludeFromCodeCoverage]
基本的に、ではない可能性反射せずに、しかし、あなたはあなたがこれらのクラスのインスタンスを作成するにはどうすればよいの周り –
働いていたことができるかどうかを確認するためにあなたのコードサンプルを投稿することができますか?ファクトリメソッド?シングルトン?単体テストがあなたのコードで設計上の問題を示しているのは大好きです。 –
私は、クラスはシングルトンだと思います。あなたは確認できますか? –