Certaine personnes pensent que le fait d’utiliser un Designer empêche le débogage. N’en déplaise à certain, cette idée est fausse. Dans WF4 (comme dans WF3) il est possible d’introduire un point d’arrêt via le designer.

 WF4_test_breakpoint

Par contre les options sont très limitées (pas de règles sur un Breakpoint). Il n’est possible que de supprimer un Breakpoint ou de le désactiver.

 WF4_test_breakpoint_remove

Rien ne vous interdit par contre de mettre des point d’arrêt dans votre code WF (activité custom , etc...).

 

Pour les tests unitaires, pas de soucis non plus. Si vous souhaitez tester un Workflow seul, le WorkflowInvoker serra votre ami ;)

Par exemple : Un méthode destinée à fournir un activité à partir d’un expression Vb :

Vb

Private Function GetActivity(ByVal expressionVb As String) As Activity(Of Boolean)
    Dim activity As new VisualBasicValue(Of Boolean)(expressionVb)
    return activity
End Function

C#

private Activity<Boolean> GetActivity(String expressionVb)
{
    VisualBasicValue<Boolean> activity = new VisualBasicValue<Boolean>(expressionVb);
    return activity;
}

On pourra créer un test comme celui-ci :

C#

/// <summary>
///A test for GetActivity
///</summary>
[TestMethod()]
[DeploymentItem("WorkflowConsoleApplication1.exe")]
public void GetActivityTest()
{
    string expressionVb = "True";
    Boolean expected = true;
    Boolean actual;
    actual = WorkflowInvoker.Invoke(Program_Accessor.GetActivity(expressionVb));
    
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("Verify the correctness of this test method.");
}

En plus, on assiste au petit miracle des tests via Visual Studio : Vos références à WF4 sont déjà incluses dans le projet de test ;)

Elle est pas belle la vie?