2017-11-28 14 views
1

期待される結果が異なる1つの組み合わせを除いて、パラメータのすべての組み合わせをテストするテストを作成します。 1つの特定の組み合わせを除くパラメータのすべての組み合わせをテストします。

は、これまでのところ私は

[TestCase(false, false, ExpectedResult = false)] 
[TestCase(false, true, ExpectedResult = false)] 
[TestCase(true, false, ExpectedResult = false)] 
[TestCase(true, true, ExpectedResult = true)] 
public bool Test(bool paramA bool paramB) 
{ 
    var target = new MyComand(paramA, paramB); 
    return target.CanExecute(); 
} 

// this class is made up, but shows the basic concept 
public class MyCommand 
{ 
    bool _preConditionA; 
    bool _preConditionB; 

    public MyCommand(bool preConditionA, bool preConditionB) 
    { 
      _preConditionA = preConditionA; 
      _preConditionB = preConditionB; 
    } 

    public bool CanExecute() 
    { 
     if (_preConditionA == false) 
      return false; 

     if (_preConditionB == false) 
      return false; 

     return true; 
    } 
} 

またはいくつかのクレイジー[TestCaseSource]が出ています。 どちらのケースも私の個人的な可読性に問題があります。 これは、パラメータがブール値ではない場合、より複雑になります。 [Values][Combinatorical]の属性をチェックしましたが、私の場合は実際には機能しません。

これを解決する方法は他にもありますか?

+0

この質問を抽象的なものにしないために、「あなたのケースでうまくいく」データの例を挙げてください。 –

+1

あなたのテストで 'Combinatorial'が動作しないのはなぜですか?完璧なユースケースのように見えます。 –

+0

@GabrielNegut [Combinatorical]は、私が正しく理解していることを除いて、すべての組み合わせをテストします。問題現在のテストでその特別なテストケースがテストされているかどうかを調べるために、コードロードを記述する必要があります。 – HankTheTank

答えて

0

これを解決する方法は他にもありますか?

可能な解決策の1つは、引数がテストでチェックされているポスト条件を生成すると予想されない組み合わせをスキップすることです。

+1

Assumptionsでこの例をどのように実装しますか? – HankTheTank