Vor allem im Falle Ihrer Tätigkeit einen einzelnen Wert zurückgibt, erben nur von CodeActivity<TResult> und leicht außer Kraft setzen Execute() mit TResult als Rückgabetyp. Darüber hinaus haben Sie bereits eine 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;
}
}
aber sagen, dass WorkflowInvoker ist der Weg zur Einheit Test fast alle Ihre Aktivitäten. Unter über benutzerdefinierten Code Aktivität als Beispiel:
[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));
}
}
Anstatt WorkflowInvoker Sie auch WorkflowApplication aber für Unit-Tests verwenden können, die gar nicht nötig scheint, wenn man nur schnell kurzlebig Workflows wollen aufrufen für sie, "ihr Ding" zu tun und zurückzukehren. Es sei denn, Sie möchten komplexere Dinge wie asynchrone Workflows und/oder Lesezeichen testen.
Sie werden auch Microsoft.Activities.UnitTesting überprüfen möchten.
Ich habe diesen Link gefunden, der sehr nützlich war: http://daysincode.blogspot.co.uk/2012/05/unit-test-of-workflow-for-code-action.html – cpoDesign
Das ist im Grunde das gleiche denken das habe ich dir in meiner Antwort gezeigt. Verwenden Sie 'CodeActivity' nur für Aktivitäten mit einem eindeutigen Rückgabewert. Die meisten tun es. Dann können Sie einfach 'WorkflowInvoker.Invoke ()' verwenden, um den Wert –
Joao
zu bekommen. Sie sind auch einfacher zu Unit-Test, wie Sie anhand des Unterschieds zwischen meinem Code zu dem Blog-Post-Code sehen können. – Joao