Проблема: во время выполнения экземпляры классов, производные от System.Workflow.ComponentModel.Activity
, сериализуются механизмом рабочего процесса. Я хотел бы провести модульное тестирование этих типов, чтобы убедиться, что они могут быть сериализованы. На данный момент эти исключения появляются только в производстве.
нерабочий раствор:
public class UnitTestActivity : Activity
{}
[Test]
public void ShouldBeSerializable()
{
var activity = new UnitTestActivity();
activity.Clone(); // throws exception here
}
Приведенный выше тест выдает следующее исключение «System.InvalidOperationException: это недопустимая операция времени разработки. Операцию можно выполнять только во время выполнения».
Я также попробовал метод activity.Save(...)
, который затем выдает то же исключение. Код, который я использовал:
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 );
}
}