PEX의 테스트 대상 코드를 단일 메서드로 제한 할 수 있습니까? 어셈블리와 클래스에 제약 할 수 있다는 것을 알고 있지만 멤버는 무엇입니까? 나는 단지이 가능한 1을 테스트하고 있습니다 때문에,테스트중인 PEX 코드를 단일 메서드로 제한 하시겠습니까?
가public virtual bool GetLastSymbol(string symbolHint, out string symbol)
{
if (symbolHint == null)
{
throw new ArgumentNullException("symbolHint");
}
IEnumerable<string> symbols;
symbol = this.VariableHints.TryGetValue(symbolHint, out symbols) ? symbols.Last() : null;
return symbol != null;
}
다음 PUT이 12/15 코드 커버리지를 달성 :
나는 기본적으로 다음과 같은 방법에 대한 100 %의 코드 커버리지를 달성하기 위해 노력하고 그것을 반환 할 수 있습니다 값 :이 방법은 두 가지 안타 있도록
found = symbolManager.GetLastSymbol(symbolHint, out symbol);
PexAssert.IsFalse(found);
이 PUT에 대한 전체 범위를 달성하기 위해, 나는 객체의 상태를 변경해야합니다. 팩토리 메소드를 사용하여 별도의 PUT을 사용하여 각기 다른 상태를 설정할 수 있지만이 방법을 사용하면 완전한 커버리지를 가진 PUT 대신 코드 커버리지가 불완전한 2 개의 PUT을 남겨 둡니다. 나는 이론에서 을 깨닫는다. 2 PUT는 100 %의 결합 된 커버리지를 가질 것이지만 실제로는의 100 % 숫자가 필요하다. 그래서 나는 CI를 올바르게 설정할 수있다.
symbolManager.CreateSymbol(symbolHint); // Ensure next call returns true.
found = symbolManager.GetLastSymbol(symbolHint, out symbol);
PexAssert.IsTrue(found);
는 아마도 GetLastSymbol
방법에 대한 코드 커버리지는 이제 100 %이지만, 이유는
그래서, 같은 PUT의 다른 지점에 도달하기 위해, 위 2 줄에 다음 코드를 추가해야합니다 테스트중인 유형에 다른 메소드 호출을 도입했습니다. 이제 코드 범위는 20/29으로 떨어집니다.
PUT이 단일 메소드의 코드 커버리지 만 측정하도록 어떻게 제한 할 수 있습니까?
Microsoft.Pex :이 경우 :