En primer lugar, en caso de que su actividad devuelve un solo valor, simplemente heredan de CodeActivity<TResult> y fácilmente anulan Ejecutar() con TResult como tipo de retorno. Además, ya tiene disponible un OutArgument<TResult> Result.
public sealed class ParameterActivity : CodeActivity<int>
{
public InArgument<int> Argument1 { get; set; }
public InArgument<int> Argument2 { get; set; }
protected override int Execute(CodeActivityContext context)
{
var a = Argument1.Get(context);
var b = Argument2.Get(context);
return a + b;
}
}
Dicho esto, WorkflowInvoker es el camino a seguir a la unidad de prueba de casi todas sus actividades. Teniendo por encima de la actividad de código personalizado como ejemplo:
[TestFixture]
public TParameterActivity
{
[Test]
public void ParameterActivity_Test001()
{
var activity = new ParameterActivity();
var input1 = new Dictionary<string, object>
{
{ "Argument1", 10 },
{ "Argument2", 5 }
};
var input2 = new Dictionary<string, object>
{
{ "Argument1", -13 },
{ "Argument2", 3 }
};
var output1 = WorkflowInvoker.Invoke<int>(activity, input1);
var output2 = WorkflowInvoker.Invoke<int>(activity, input2);
Assert.That(output1, Is.EqualTo(15));
Assert.That(output2, Is.EqualTo(-10));
}
}
En lugar de WorkflowInvoker también se puede utilizar WorkflowApplication pero para las pruebas unitarias que no parece en absoluto necesario cuando lo que desea invocar rápidamente los flujos de trabajo de corta duración para que ellos hagan "lo suyo" y regresen. A menos que desee probar cosas más elaboradas, como flujos de trabajo asincrónicos y/o marcadores.
También querrá comprobar Microsoft.Activities.UnitTesting.
he encontrado este enlace que fue muy útil: http://daysincode.blogspot.co.uk/2012/05/unit-test-of-workflow-for-code-action.html – cpoDesign
Eso es básicamente lo mismo que pensar que te mostré en mi respuesta. Simplemente use 'CodeActivity' para actividades con un valor de retorno único. Debe hacerse. A continuación, puede usar fácilmente 'WorkflowInvoker.Invoke ()' para obtener el valor –
Joao
También son más fáciles de probar la unidad, como puede ver por la diferencia entre mi código y el código de la publicación del blog. – Joao