HaPpY hApPy
2. NUnit - [TestCase] Attribute 본문
ㅠ-ㅠ 공부하는 시간보다 여기 정리하는데 시간이 5배는 걸린다..--;
앞으로 간단히 해야겠답!
이전에는 메소드 위에 [Test] Attribute를 이용해봤다.
하지만 생각해 볼 문제가 있다.
만약 FilePath를 테스트 할 때 아래와 같이 3개의 파일을 테스트 하게 될 경우
"SomeFile1.BUG", //BUG 대문자
"SomeFile2.bug", //bug 소문자
"SomeFile3.Bug", // Bug 대,소문자
이전 장에서 공부한 [Test]를 사용할 경우 3개의 테스트 함수가 필요하다.
[Test] public void IsValidExtension_UpperExtension_ResultTrue() // UpperExtension { CFileExtension analyzer = new CFileExtension(); bool result = analyzer.IsValidFileExtension("SomeFile1.BUG"); Assert.True(result); } [Test] public void IsValidExtension_LowerExtension_ResultTrue() // LowerExtension { CFileExtension analyzer = new CFileExtension(); bool result = analyzer.IsValidFileExtension("SomeFile2.bug"); Assert.True(result); } [Test] public void IsValidExtension_MixedExtension_ResultTrue() //MixedExtension { CFileExtension analyzer = new CFileExtension(); bool result = analyzer.IsValidFileExtension("SomeFile.Bug"); Assert.True(result); }
이렇게 해야 된다...결과는?
UpperExtension_ResultTrue만 통과했다.
이유는 테스트 조건이 아래와 같이 대문자 일 경우만 통과이기 때문이다.
public bool IsValidFileExtension(string fullFileName)
{
if (fullFileName.EndsWith(".BUG"))
{
return true;
}
return false;
}
여튼 결과가 중요한게 아니고, 저런 테스트를 할때 상당히 비 효율적인 코드를 작성해야 되는데, 이를 보완한 Attribute가 있다.
바로 [TestCase] Attribute이다.
위와 동일한 테스트 결과를 얻고 싶다면 아래 처럼 다시 작성해보자.
[TestCase("SomeFile1.BUG")] // 대문자 [TestCase("SomeFile2.bug")] // 소문자 [TestCase("SomeFile3.Bug")] // 대,소문자 public void IsValidExtension_BadExtension_ResultTrue(string filePath) //위 TestCase를 통해 전달 { CFileExtension analyzer = new CFileExtension(); bool result = analyzer.IsValidFileExtension(filePath); Assert.True(result); }
Run하면 아래와 같은 결과를 얻을수 있다.
조금더 응용해 보자, 아래 처럼 bool값을 추가하자.
[TestCase("SomeFile1.BUG", true)] // 대문자, 통과 예상 [TestCase("SomeFile2.bug", false)] // 소문자, 실패 예상 [TestCase("SomeFile3.Bug", false)] // 대,소문자 실패 예상 public void IsValidExtension_BadExtension_ResultTrue(string filePath, bool bExpected) //위 TestCase를 통해 전달 { CFileExtension analyzer = new CFileExtension(); bool result = analyzer.IsValidFileExtension(filePath); Assert.AreEqual(result, bExpected); //Asert.AreEqul로 바뀌고 두 값을 비교해서 true면 통과가 된다. }
위 코드를 돌려보면 아래와 같은 결과가 나온다.
모두 통과했다.
다음엔 예외가 발생해야 통과하는 테스트를 작성해 보겠답!
'.NET > Unit Test' 카테고리의 다른 글
3. NUnit - Exception 발생해야 pass하는 NUnit Testing! (0) | 2014.08.16 |
---|---|
1. NUnit 으로 작성하는 첫 Unit Testing! (0) | 2014.08.15 |
설치편! Visual studio 에서 NUnit 설치 및 설정 하기! (0) | 2014.08.15 |
NUnit 으로 시작하는 .Net Unit Testing (0) | 2014.08.15 |