Prima di tutto, nel caso in cui la vostra attività restituisce un singolo valore, solo ereditano da CodeActivity<TResult> e facilmente sovrascrivere execute() con TResult come tipo di ritorno. Inoltre, hai già uno 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;
}
}
Detto questo, WorkflowInvoker è la strada da percorrere per unità di prova quasi tutte le vostre attività. Prendendo sopra attività di codice personalizzato come ad esempio:
[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));
}
}
Piuttosto che WorkflowInvoker è anche possibile utilizzare WorkflowApplication ma per unit testing che non sembra affatto necessario quando si vuole solo richiamare rapidamente i flussi di lavoro di breve durata per loro di fare "la loro cosa" e tornare. A meno che non vogliate testare cose più elaborate come i flussi di lavoro asincroni e/oi segnalibri.
Si potrà anche controllare Microsoft.Activities.UnitTesting.
ho trovato questo collegamento che è stato utile: http://daysincode.blogspot.co.uk/2012/05/unit-test-of-workflow-for-code-action.html – cpoDesign
Questo è praticamente lo stesso che ti ho mostrato nella mia risposta. Basta usare 'CodeActivity' per attività con un valore di ritorno univoco. La maggior parte lo fa. Quindi puoi facilmente usare 'WorkflowInvoker.Invoke ()' per ottenere il valore –
Joao
Sono anche più facili da testare l'unità, come puoi vedere dalla differenza tra il mio codice e il codice del post del blog. – Joao