Visual Studioでユニットテストの作成ツールを使用し、明らかにそれは私の抽象クラスをインスタンス化しようとします。
私の質問は:Visual Studioがそれを行うようにしようとしている方法を単体テストしようとするのか、インスタンス化するモッククラスを作成するのか、またはこの抽象クラスを使用するメソッドだけをテストするのか?
ありがとう。
この抽象クラスにテストする価値のあるメソッドがある場合は、それらをテストする必要があります。テストの抽象クラスをサブクラス化して(MyAbstractClassTestingのように名前を付けて)、この新しい具象クラスをテストすることができます。
2つの反対の視点があります。
私は(現在)2番目のオプションと、抽象クラスのモックを作成できる RhinoMocks PartialMock 機能を使用して抽象クラスをテストすることを好みます。
実装クラスをテストするだけです。
余分な機能を追加しないテスト用の特定の実装をいつでも作成できます。
テストを聞いてください。抽象クラスやプライベートメソッドなどのテストを可能にする魔法のモックツールの使用は、テストコードの匂いです。
mockrepositoryからの使用:
[testmethod]
public void testwithmockrepository()
{
var mockrepository = new rhino.mocks.mockrepository();
var mock = mockrepository.partialmock<myabstractclass>();
using ( mockrepository.record() )
{
expect.call( mock.dosomething( arg<string>.is.anything ) ).return( "hi..." ).repeat.once();
}
using ( mockrepository.playback() )
{
assert.areequal( "hi..." , mock.dosomething( "salam" ) );
}
}