Um eine gute Testabdeckung zu erhalten, möchte ich die WriteExternal
und ReadExternal
Methoden von IPortableObject
testen (wie unter Creating an IPortableObject Implementation (.NET) beschrieben).Testen einer Oracle Coherence IPortableObject Implementierung in .NET
Hier ist Code ähnlich zu dem, was ich in meiner Testmethode habe (was ich mag, und es funktioniert).
Aber um das zu bekommen, zu arbeiten, hatte ich Unterklasse tun PofStreamWriter
BeginProperty
und PofStreamReader
außer Kraft zu setzen AdvanceTo
außer Kraft zu setzen. Das riecht für mich ein bisschen komisch, aber ich konnte keine bessere Lösung finden. Unten ist mein tatsächlicher Code für meinen CoherenceTestHelper.
Frage: Hat jemand andere Einheit ihre IPortableObject
Implementierung einen besseren Weg getestet?
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;
}
}
}
Dann würde ich einen bestimmten Mock für jede IPortableObject-Implementierung benötigen, wo dieser Helfer für jedes Objekt verwendet werden kann. Außerdem möchte ich sicherstellen, dass die Anrufe (z. B. ReadString und WriteString) ausgeglichen sind und in der gleichen Reihenfolge sind, von der ich nicht sicher bin, wie ich sie vortäuschen soll. Ich bin mit der tatsächlichen Ausführung konfrontiert. –