Public Interface IMyClass
Function MyMethod(ByVal aValue As String) As Date
End Interface
Public Class MyClass
Implements IMyClass
Public Function MyMethod(ByVal aValue As String) As Date Implements IMyClass.MyMethod
Try
' Calculate return date based on aValue
Catch ex As Exception
Call MyUtilityClass.LogError("MyClass", "MyMethod", ex)
Throw
End Try
End Function
End Class
Partial Public NotInheritable Class MyUtilityClass
Public Shared Sub LogError(ByVal className As String,
ByVal methodName As String,
ByVal ex As Exception)
' Write details to Event Log
End Sub
End Class
私はこれをテストしようとしていますC#(フレームワーク4.5)単体テストプロジェクトでは、aValue
はコンマで区切られた2つの数字でなければなりません。そうしないと、例外とイベントログがスローされます。
私は例外が正しくスローされることを保証するために、次のユニットテストを設定している:
[TestClass]
public class MyClassUnitTest
{
private readonly StubMyClass myClass = new StubMyClass();
[TestMethod]
[ExpectedException(typeof(InvalidCastException))]
public void TestMyMethodInvalidMissingNumber()
{
this.myClass.MyMethod("0,");
}
}
は、このすべてがうまく動作してMyMethod
でロジックが予想される例外が発生するような試験は、合格します。しかし、私はイベントログを書きたくはありません。だから、MyUtitlityClass
をシムしてLogError
へのコールを傍受し、代わりに何もしないのですか?
私が見てきたすべての偽物の例は、偽の値を返すメソッドのためのもの(およびC#で書かれたすべてのです!)私がしようとすると、このようなパターンを実装する場合、それはのlogErrorが持っていないというエラーを出しますゲッター
- レンダラは、文字列の終端およびフォーマットとして ' '' VB.Netのコメントを検出し、誤っ – Shevek
メタナイト@ - の感謝を私のVBのコメントを取得する方法を教えて! – Shevek