우리 팀은 단위 테스팅과 조롱을 막 시작했으며, 확장 방법을 고려해 토론을 진행했습니다. 문제는 확장 메서드를 사용하여 클래스를 테스트하는 좋은 방법입니다. 나는. 우리는이 같은 열거가 .. 확장 방법을 사용합니다단위 테스팅 확장 방법
public enum State
{
[LangID(2817)]
Draft = 0,
[LangID(2832)]
Booked = 1,
[LangID(1957)]
Overdue = 2,
[LangID(2834)]
Checked = 3,
}
: 다시과 같이, 테스트중인 클래스에 의해 호출됩니다
public static string GetDescription(this Enum _enum)
{
Type type = _enum.GetType();
MemberInfo[] memInfo = type.GetMember(_enum.ToString());
if (memInfo != null && memInfo.Length > 0)
{
object[] attrs = memInfo[0].GetCustomAttributes(typeof(LangID), false);
if (attrs != null && attrs.Length > 0)
return LanguageDB.GetString(((LangID)attrs[0]).ID);
}
return _enum.ToString();
}
..
public class SUT(){
public void MethodUnderTest(){
string description = SomeObject.Status.GetDescription();//Status is Type State
}
}
이 예제에서 열거 형은 LanguageDB를 통해 사용자의 언어로 설명을 얻고 있습니다. LanguageDB는 정적이므로 클래스 내부에 삽입되지 않습니다. 우리는 자연스럽게 굴절시킬 수 있지만 코드가 거의 완벽하게 작동한다는 점을 감안할 때 큰 투자가 될 것입니다. 좋은 제안이 있으십니까?
질문은 언어 DB를 조롱하는 방법입니다 (수행해야하는 경우). –
그럼 다음과 같이 구현할 수도 있습니다 : If (InTesTMode) return; // 그러나 나는 정말로 그 좋은 생각을 생각하지 않는다 ;-) – BBorg