2014-04-28 2 views
3

이 단위 테스트 코드는 제대로 시험을 세 번 실행 NUnit TestCaseSourceNUnit과 설정 테스트 이름 프로그래밍

[Test, TestCaseSource("DivideCases")] 
public void DivideTest(int n, int d, int q) 
{ 
    Assert.AreEqual(q, n/d); 
} 

static object[] DivideCases = 
{ 
    new object[] { 12, 3, 4 }, 
    new object[] { 12, 2, 6 }, 
    new object[] { 12, 4, 3 } 
}; 

에서 가져온 데,하지만 출력에 내가 같은 시험 방법 이름을 가져, "DivideTest"세 가지를 실행 타임스.

코드에 정의 된 일부 값에 따라 프로그래밍 방식으로 테스트 이름을 변경하거나 설정하고 싶습니다.

누구나 어떻게 할 수 있습니까?

답변

4

게시 한 링크에는 TestCaseSource 속성을 통해 링크 된 메소드를 통해 명시 적으로 TestCaseData 객체를 만드는 스 니펫이 있습니다. 이렇게하면 각 테스트 사례의 이름을 설정할 수 있습니다. 아래의 마지막 TestCaseData 인스턴스를 참조하십시오.

public static IEnumerable TestCases 
    { 
    get 
    { 
     yield return new TestCaseData(12, 3).Returns(4); 
     yield return new TestCaseData(12, 2).Returns(6); 
     yield return new TestCaseData(12, 4).Returns(3); 
     yield return new TestCaseData(0, 0) 
     .Throws(typeof(DivideByZeroException)) 
     .SetName("DivideByZero") 
     .SetDescription("An exception is expected"); 
    } 
    } 
+0

두 번 읽었을 때 내 눈에 띄었습니다. 고마워. – Attila

+0

'TestCaseData' 클래스는 어디에 있고 어떻게 실행됩니까? 동일한 것을 실행할 수 없습니다 –

+0

TestCaseSource를 사용하지 않을 때 어떤 방법이 있습니까? –

관련 문제