속성이있는 (많은) 클래스가 있습니다. 일부는 논리가 있고 일부 논리는 논리가 없습니다. 이러한 속성을 테스트하려고한다고 가정 할 때 어떻게해야합니까?BDD 스타일의 테스트 속성 (get/set) 단위 테스트 방법 (전략)
최근에 단위 테스트를 만들기위한 BDD 스타일에 관심이 많았습니다.
그래서 컨텍스트의 설정을 할 것입니다 - 기본적으로 SUT를 만들고 필요한 모든 것을로드하십시오. 그런 다음 각 관찰 (테스트 방법)에서 특정 속성에 포함해야하는 내용이 포함되어 있는지 확인합니다.
여기 내 질문이 있습니다. SUT에 20 개의 속성이 있다면 20 개의 Observations/Tests를 생성합니까? 속성 중 하나에 더 흥미로운 논리가 포함되어 있다면 더 많은 것일 수 있습니다.
[Observation]
public void should_load_FirstName()
{
Assert.Equals<string>("John", SUT.FirstName);
}
[Observation]
public void should_load_LastName()
{
Assert.Equals<string>("Doe", SUT.LastName);
}
[Observation]
public void should_load_FullName()
{
Assert.Equals<string>("John Doe", SUT.FullName);
}
단일 관찰에서 간단한 것들을 집계하면 더 좋을까요?
[Observation]
public void should_load_properties()
{
Assert.Equals<string>("John", SUT.FirstName);
Assert.Equals<string>("Doe", SUT.LastName);
Assert.Equals<string>("John Doe", SUT.FullName);
}
또는 사용자 지정 특성을 사용하면 (메서드에 여러 번 적용 할 수 있음) 어떻게 될까요? 나는 가능 할 수 있도록 같은 : 일반적으로
[Observation(PropertyName="FirstName", PropertyValue="John")]
[Observation(PropertyName="LastName", PropertyValue="Doe")]
[Observation(PropertyName="FullName", PropertyValue="John Doe")]
public void should_load_properties()
{
}
감사의 말을 표합니다. 돌아 오는 길, CallContext의 블로그 게시물을 통해 많은 도움을 얻을 수있었습니다! Meszaros의 사이트에서 파생 된 값에 대한 링크를 읽고 그것에 대해 읽었습니다 (귀하의 후). 나는 당신이 당신의 Reverse 예제에서했던 것처럼 그것을 구현하는 극단으로 가고 싶지 않다. 변수 옆에 expectedResult를 입력 옆에 넣은 다음 리터럴 값만 사용하는 것이 좋을 것 같습니다. 필자의 경우 위의 예에서 듣기로는 분명하지 않지만 로컬 디스크에서 테스트 데이터를로드하여 SUT를 만듭니다 (수용/상호 작용 테스트 임). 입력 값을 지정하는 더 좋은 방법을 찾아야합니다 ... –