Afin d'obtenir une bonne couverture de test, je veux tester les méthodes de IPortableObject
WriteExternal
et ReadExternal
(comme décrit à Creating an IPortableObject Implementation (.NET)).Le test d'une mise en œuvre Oracle Coherence IPortableObject dans .NET
Voici un code similaire à ce que j'ai dans ma méthode de test (que j'aime, et ça marche).
Mais pour que cela fonctionne, je fisse la sous-classe PofStreamWriter
pour remplacer BeginProperty
et PofStreamReader
pour remplacer AdvanceTo
. Pour moi, cela sent un peu drôle, mais je ne pouvais pas trouver une meilleure solution. Voici mon code actuel pour mon CoherenceTestHelper.
Question: Est-ce que quelqu'un d'autre a testé son implémentation IPortableObject
d'une meilleure façon?
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;
}
}
}
Ensuite, j'aurais besoin d'un simulacre spécifique pour chaque implémentation d'IPortableObject, où cette aide peut être utilisée contre n'importe quel objet. Aussi, je veux m'assurer que les appels (par exemple ReadString et WriteString) sont équilibrés et dans le même ordre, dont je ne suis pas sûr comment moquer. Je suis concerté avec l'exécution réelle. –