2014-03-05 2 views
5

일부 테스트 사례를 실행하려고하지만 인수 중 하나를 선택적으로 만들어야합니다.선택적 인수와 함께 NUnit TestCase 특성을 사용하는 방법이 있습니까?

나는 해봤 다음하지만 NUnit과는 테스트를 무시하고 인쇄 다음 "무시 : 제공 한 인수의 수가 잘못"

[TestCase(Result = "optional")] 
[TestCase("set", Result = "set")] 
public string MyTest(string optional = "optional") 
{ 
    return optional;   
} 

이 선택적 인수로 테스트 케이스를 실행할 수 있습니까?

+1

현재 버전의 NUnit에서는 불가능합니다. 그러나 이것은 현재 개발중인 v3에 대한 감각적 인 향상이라고 생각합니다. [Github 프로젝트] (https://github.com/nunit/nunit-framework/issues)에서 기능 요청을 열 수 있습니다. –

답변

5

다만이 경우이 시험은 선택 사항 paramerters이 NUNIT에서 지원되지 않습니다합니다 여기에 다른 두 가지를 테스트하려는처럼

[TestCase("set", Result = "set")] 
public string MyTest(string optional) 
{ 
    return optional;   
} 

[TestCase(Result = "optional")] 
public string MyTest() 
{ 
    return MyTest("optional");   
} 
1

는 소리, 그래서 두 개의 별도의 테스트를 사용하는 방향으로 의지 할 것 이 경우peer already pointed out입니다.

어떤 이유로 든 하나의 테스트에서 필요하거나 원할 경우 null 또는 상수를 매개 변수로 사용하고 테스트에서 테스트 코드를 처리 할 수 ​​있습니다. 테스트의 논리를 너무 복잡하게 만들지 않도록 조심하십시오 (이상적으로는 테스트에 논리가 없어야합니다).

const string NO_VALUE = "Just a const to identify a missing param"; 

[TestCase(null, Result = "optional")] // Either this... 
[TestCase(NO_VALUE, Result = "optional")] // or something like this 
[TestCase("set", Result = "set")] 
public void MyTest(string optional) 
{ 
    // if(optional == null) // if you use null 
    if(optional == NO_VALUE) // if you prever the constant 
    { 
     // Do something 
    } 
    else{ 
     // Do something else 
    }   
} 
+0

선택적 매개 변수가 작동하지 않음 – ranjez

+0

죄송합니다. 이제 해결되었습니다. 내 요점은 아무 것도 전달되어서는 안된다는 것을 나타내는 다른 것을 전달할 수 있다는 것입니다 (선택적 매개 변수를 사용할 때처럼). 그런 식으로 선택적 매개 변수 동작을 위조 할 수 있습니다. 일종의 해킹이나 작동해야합니다. – Kjartan

관련 문제