2017-11-28 15 views
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

아무도 다른 문제를 해결할 수 있습니까?

가능한 해결책 중 하나는 Assumptions을 사용하여 인수가 테스트에서 확인 된 게시 조건을 생성 할 것으로 예상되지 않는 조합을 건너 뛰는 것입니다.

+1

가정과 함께 예제를 어떻게 구현합니까? – HankTheTank