Problème: lors de l'exécution, les instances de classes dérivées de System.Workflow.ComponentModel.Activity
sont sérialisées par le moteur de workflow. Je voudrais tester ces types unitaires afin de s'assurer qu'ils peuvent être sérialisés. À partir de maintenant, ces exceptions n'apparaissent que dans la production.Comment tester unitairement qu'une activité Windows Workflow Foundation (WF) peut être sérialisée?
solution non-travail:
public class UnitTestActivity : Activity
{}
[Test]
public void ShouldBeSerializable()
{
var activity = new UnitTestActivity();
activity.Clone(); // throws exception here
}
Le test ci-dessus donne l'exception suivante « System.InvalidOperationException: Ceci est une opération de temps de conception invalide Vous ne pouvez effectuer l'opération lors de l'exécution. ».
J'ai également essayé la méthode activity.Save(...)
qui lance la même exception. Le code est je:
public static void SerializeToFile(Activity activity)
{
using (var fileStream = new FileStream(GetFilePath(), FileMode.Create))
{
IFormatter formatter = new BinaryFormatter { SurrogateSelector = ActivitySurrogateSelector.Default };
activity.Save(fileStream, formatter);
}
}
Quelle est l'exception que vous recevez lors de l'exécution? La même InvalidOperationException? –
Non, c'est l'exception SerializationException "habituelle". –
Nous avons découvert que le système n'utilisait pas WF pour quelque chose de particulièrement utile, donc nous avons refactorisé le code pour ne pas utiliser WF du tout. –