2017-07-27 3 views
1

私は、私の関数が実行する複雑なアルゴリズムの単体テストを書くべきところです。この関数は、呼び出し時に2つの必須引数をとります。両方の引数の組み合わせに基づいて、関数は何かを返します。単位テストの価値は単位テストの複雑さに伴い減少しますか?

function ReturnDesiredParagraphStyle(currParagraphStyle, nextParagraphStyle) 
{ 
    // logic 
} 

今では多くの可能な入力があるので問題は、入力およびIは、ユニットテスト内の複雑なロジックを記述する必要が関数の所望の出力の正確さの任意の組み合わせをテストするために、(約50各引数について)。複雑なロジックは、単体テストで入力の各組み合わせを手動で入力する必要がないという目的のループになります。

私はこのユニットテストを書いている時間のほとんどが安全のレイヤーを提供しますが、単体テストの概念を導くことは理解していません(ユニットテストのロジックは複雑で何もユニットテストのロジックをテストしません)?

+2

怠け者であり、テストを正しく書くことができないように複雑なロジックを書くことは間違っています。一度だけテストを書く必要があるので、それを正しく実行してやることが必要です。 –

+0

なぜこれを回答として書いていないのですか?問題は、非常に多くの、おそらくあまりにも多くの入力の組み合わせが単体テストですべて手動で書き込むことです。 –

+0

私の数学が正しいならば、入力の組み合わせは約2450です。それは単体テストで手動で入力することです。 –

答えて

0

単体テストの複雑なロジックは、テストする関数で記述したロジックとまったく同じです。だからこそ、それは意味をなさないでしょう。

ある時点で、関数が2つ以上の引数に基づいて戻り値を計算するとき、異なる入力組み合わせの数が高すぎる場合、単体テストを書くことはほとんど不可能になります。そして、それはかなり素早く(指数関数的に)起こります。

もちろん、いくつかの組み合わせをテストするだけでも意味があります。

関連する問題