テストのカバレッジを良好にするために、IPortableObject
(Creating an IPortableObject Implementation (.NET)で説明)のWriteExternal
およびReadExternal
のメソッドをテストしたいとします。.NETでのOracle Coherence IPortableObject実装のテスト
私のテストメソッド(これは私が好きで動作します)と同様のコードです。
しかし、この作業を取得するために、私はAdvanceTo
を上書きするBeginProperty
とPofStreamReader
をオーバーライドするサブクラスPofStreamWriter
を行いました。私にはこれは少し面白いにおいがするが、私はよりよい解決策を考え出すことができなかった。以下は私のCoherenceTestHelperの実際のコードです。
質問:他の誰かがユニットIPortableObject
をより良い方法でテストしましたか?
public static class CoherenceTestHelper
{
public static T CopyUsingPofSerialization<T>(T ipoIn) where T : IPortableObject, new()
{
T ipoOut = new T();
IPofContext context = new SimplePofContext();
using (MemoryStream ms = new MemoryStream())
{
IPofWriter writer = new MyPofStreamWriter(new DataWriter(ms), context);
ipoIn.WriteExternal(writer);
ms.Seek(0, 0);
IPofReader reader = new MyPofStreamReader(new DataReader(ms), context);
ipoOut.ReadExternal(reader);
}
return ipoOut;
}
private class MyPofStreamWriter : PofStreamWriter
{
public MyPofStreamWriter(DataWriter writer, IPofContext context)
: base(writer, context)
{
}
protected override void BeginProperty(int index)
{
}
}
private class MyPofStreamReader : PofStreamReader
{
public MyPofStreamReader(DataReader reader, IPofContext context)
: base(reader, context)
{
}
protected override bool AdvanceTo(int index)
{
return true;
}
}
}
次に、IPortableObject実装ごとに特定のモックが必要です。このヘルパーはどのオブジェクトに対しても使用できます。また、コール(例:ReadStringとWriteString)がバランスが取れていることを確認したいと思います。私は実際の執行を考えている。 –