2017-09-15 20 views
0

のためのユニットテストは、私はユニットテストに機能ここヌルエラーWebBrowserコントロール

int add(a,b) 
{ 
    int c = txtInputBox.value; 
    int d = a+b+c; 
    return d; 
} 

をしようとしていながら、私はちょうど値a、bは渡しています。私はCの値を渡していません。それはテキストボックスから取っています。

Webアプリケーションプロジェクトで関数を呼び出すと、aspxページコントロールからCの値を取得しているので、この関数は正常に機能します。

しかし、私はユニットテストプロジェクトからこの関数を実行すると、テキストボックスも読み込まれないように、ページがロードされないので、テキストボックスコントロールが失敗します。関数add(a、b)はユニットテストプロジェクトで実行されます。

したがって、txtInputBoxはnullになりますユニットテストは、デバッグエラーになり

これは、null例外とユニットテストがキャッチしに行くと、ユニットテストは失敗します。

この問題を解決するにはどうすればよいですか?

+2

add()関数をUIコントロールに依存させるのではなく、3番目のパラメータcを渡して、呼び出し元コードにtxtInputBoxから値cを渡さないようにしてください。そうすれば、コードをフォームの実装から分離することができます。 – spodger

答えて

1

私はあなたがこれを行うためにMSユニットテストプロジェクトを使用していると思います。まず第一に、MS単体テストはUIに関連するものをテストすることができないということです。そのためには、コードUIテストがあります。あなたの質問には、Textbox(またはそのようなUI要素)にアクセスするコードを移動することを検討する必要があります。以下に示すように、この関数にパラメータとして渡すことを検討してください。

public int Add (int a, int b, int c) 
{ 
    // Do Something 
} 

希望がこれです!

関連する問題