나는이 테스트에서 실제 값을 볼 수 있도록 도와 줄 수 있기를 바랍니다. 하지만 테스트에서 진정한 가치를 실제로 본적은 없습니다. 물론 나는 그들이 왜 쓰여지는지 이해할 수 있고 그들이 어떻게 유용 할 수 있는지를 알 수있다. 그러나 이러한 유형의 테스트에는 거의 ROI가없는 것 같습니다.행동 테스트의 목적을 이해하지 못함
이class ServiceObject : IServiceObject
{
Dependency _dependency;
ServiceObject(Dependency dependency)
{
this._dependency = dependency
}
bool SomeMethod()
{
dependency.SomePublicMethod();
}
}
그리고 우리의 행동 테스트에서 우리는 같은 테스트를 작성합니다 (의사 코드) :
void ServiceObject_SomeMethod_Uses_Dependency_SomePublicMethod()
{
create mock of IServiceObject;
stub out dependency object
add expectation of call to dependency.SomePublicMethod for IServiceObject.SomeMethod
call mockserviceobject.SomeMethod
check whether expectation was satisfied
}
은 분명하지만 만약없는 몇 가지 세부 사항이 있습니다 여기에 우리의 코드베이스의 일부 클래스의 예입니다 당신은 당신이 이해할 수있는 이런 유형의 테스트에 익숙합니다.
내 질문은 내 ServiceObject가 종속성 메서드를 호출한다는 사실을 아는 것이 중요하다는 것을 알 수 없다는 사실에서 파생됩니다. 나는 당신이 그 방법의 논리가 그것이 예정되어있는 부분을 치고 있는지 확인하기를 원하기 때문에 그 뒤에있는 추론을 이해한다. 그러나 내가 볼 수없는 것은 이것이 지속 가능한 테스트 패턴 인 방법입니다.
로직을 작성하고 코드가 작동해야하는 방법을 알고 있으므로 작동하는지 확인하기 위해 한 번 테스트 한 후에 변경해야하는 이유는 무엇입니까? 이제 팀 환경에서 일하면 누군가가 코드를 변경하지 않아서 종속성이 우연히 건너 뛴다는 사실을인지하고 있는지 확인하고자 할 수 있습니다. 그러나 그것이 합당한 이유 때문에 건너 뛰면 어떻게 될까? 그런 다음 전체 테스트와 다른 테스트가 모두 폐지되어야합니다.
어쨌든 나는 이런 유형의 테스트의 진정한 잠재력에 관해 조명하기를 바라고 있습니다.
그래, 그 점을 알 수 있습니다. – spinon