2017-08-23 3 views
-1

プライベートアクセス修飾子を使用してクラステストメソッドをユニット化しようとしていますが、これらのメソッドのアクセシビリティを変更することはできません。 、そして、xUnitを使用してプライベートメソッドとフィールドを持つクラスをユニットテストするにはどうすればよいですか?

internal void MyMethodForTest(object sender, EventArgs e) //test method 
{ 
    //business code 
} 

private void MyMethod(object sender, EventArgs e) //real method 
{ 
    //business code 
} 

テストは、あなたの内部メソッドにアクセスできるように、この行を追加します:

public class Form1 : Form 
{ 
    private void MyMethod(object sender, EventArgs e) 
    { 
     //business code 
    } 
    private void InitializeComponent() 
    {this.Load += new System.EventHandler(this.MyMethod); 
    } 
} 
+3

ユニットテストではテストしません。パブリックメソッドとプロパティのテストを通じてそれらをテストします。 – Fabio

+0

@Fabioパブリックメソッドはありません。私はプライベートメソッドしか持っていません。ビジネスロジックを持っていますので、テストを実行する必要があります。 –

+0

どのように動作しますか?クラスにパブリックインターフェイスがない場合、そのロジックをどのように実行できますか? – dymanoid

答えて

-2

あなたがテストのための一時的な内部メソッドを作ることができます

[assembly:InternalsVisibleTo("UnitTest")] 

あなたがテストが終了した後、内部テストメソッドを削除することができます。

関連する問題