Nie jestem pewien, czy powinienem zapytać o to tutaj, ale tutaj idziemy, podczas gdy jednostka testuje prywatną statyczną metodę, która ma jako parametr krótki, otrzymuję MissingMethodException tylko wtedy, gdy parametr wynosi 0.Czy to błąd? MissingMethodException uzyskujący dostęp do prywatnej statycznej metody z 0 jako parametrem
używam VS 2010 SP1 kierowania Framework 4 (pełna), tutaj jest minimum kod odtworzyć ten błąd (podnosimy kod VB6 więc nie bądź niegrzeczny):
[DataContract]
public enum NotificationResult
{
[EnumMember]
Success,
[EnumMember]
StoredError,
[EnumMember]
InvalidId,
[EnumMember]
OperationError,
}
public sealed class NotificationContext
{
private static NotificationResult GetExecuteResult(short result)
{
NotificationResult executeResult;
switch (result)
{
case 0:
executeResult = NotificationResult.Success;
break;
case 1:
executeResult = NotificationResult.StoredError;
break;
case 2:
executeResult = NotificationResult.InvalidId;
break;
default:
executeResult = NotificationResult.OperationError;
break;
}
return executeResult;
}
}
Oto jak ja testowania kodu:
PrivateType privateHelperType = new PrivateType(typeof(NotificationContext));
var actual = (NotificationResult)privateHelperType.InvokeStatic(
"GetExecuteResult", (short)1);
var actual2 = (NotificationResult)privateHelperType.InvokeStatic(
"GetExecuteResult", (short)0); //here is where i get the exception
W pierwszym wywołaniu otrzymuję oczekiwany wynik, w drugim wywołaniu otrzymuję wyjątek (dodałem rzut do krótkiego myślenia, że być może wyjątek był, ponieważ nie znaleziono metody z int jako parametrem).
Czy ktoś jest w stanie odtworzyć zachowanie ?, czy robię coś nie tak?
Dzięki za pomoc.
Nie testuj metod prywatnych. – jason
@Jason Wiem, ale tak jak powiedziałem, aktualizujemy aplikację VB6 i ta metoda nie uzyskała 100% pokrycia i musimy zweryfikować, że działała tak, jak określono. –
Nie potrzebujesz 100% pokrycia prywatnych metod; tylko twoje nieprywatne metody. – jason