- Vue d'ensemble (Overview)
- Activités personnalisées (Custom Activities)
- Migration des activités vers .NET 6
- Notes de publication
- Création de règles d'analyse de flux de travail
- Création de paramètres de projet d'activité
- Création d'assistants personnalisés
- Classer les activités par ordre de priorité
- UiPath.Activities.Api.Base
- UiPath.Studio.Activities.Api
- UiPath.Studio.Activities.Api.Activities
- UiPath.Studio.Activities.Api.BusyService
- UiPath.Studio.Activities.Api.ExpressionEditor
- UiPath.Studio.Activities.Api.Expressions
- UiPath.Studio.Activities.Api.Licensing
- UiPath.Studio.Activities.Api.Mocking
- UiPath.Studio.Activities.Api.ObjectLibrary
- UiPath.Studio.Activities.Api.PackageBindings
- UiPath.Studio.Activities.Api.ProjectProperties
- UiPath.Studio.Activities.Api.ScopedActivities
- UiPath.Studio.Activities.Api.Settings
- UiPath.Studio.Activities.Api.Wizards
- UiPath.Studio.Activities.Api.Workflow
- UiPath.Studio.Api.Controls
- UiPath.Studio.Api.Telemetry
- UiPath.Studio.Api.Theme
- Robot JavaScript SDK
- SDK de déclencheurs
- SDK Agents

Guide du développeur
Tester votre activité
Une fois la nouvelle activité implémentée, vérifiez qu'elle fonctionne comme prévu. Vous pouvez tester votre activité en utilisant l’une de ces méthodes :
Tests unitaires
Le moyen le plus simple et le plus rapide de tester le code d'activité consiste à écrire des tests unitaires qui isolent le code d'activité et testent des scénarios individuels.
Par exemple :
[Theory]
[InlineData(1, Operation.Add, 1, 2)]
[InlineData(3, Operation.Subtract, 2, 1)]
[InlineData(3, Operation.Multiply, 2, 6)]
[InlineData(6, Operation.Divide, 2, 3)]
public void Calculator_ReturnsAsExpected(int firstNumber, Operation operation, int secondNumber, int expectedResult)
{
var calculator = new Calculator()
{
SelectedOperation = operation
};
var result = calculator.ExecuteInternal(firstNumber, secondNumber);
Assert.Equal(expectedResult, result);
}
[Theory]
[InlineData(1, Operation.Add, 1, 2)]
[InlineData(3, Operation.Subtract, 2, 1)]
[InlineData(3, Operation.Multiply, 2, 6)]
[InlineData(6, Operation.Divide, 2, 3)]
public void Calculator_ReturnsAsExpected(int firstNumber, Operation operation, int secondNumber, int expectedResult)
{
var calculator = new Calculator()
{
SelectedOperation = operation
};
var result = calculator.ExecuteInternal(firstNumber, secondNumber);
Assert.Equal(expectedResult, result);
}
L'exemple d'extrait de code précédent crée une nouvelle instance de la classe Calculator et appelle la fonction ExecuteInternal . Il n'y a rien de spécifique lié aux activités dans ce contexte et les principes de base de test unitaire s'appliquent.
Pour voir un exemple, accédez à l' exemple d'activité Calculatrice dans GitHub.
Tests de workflow
Les tests de workflow sont un type de tests unitaires qui s'appuient sur la classe WorkflowInvoker pour placer l'activité à l'intérieur d'un workflow et l'exécuter comme il le serait avec le robot UiPath :
[Fact]
public void Divide_ReturnsAsExpected()
{
var activity = new Calculator()
{
FirstNumber = 4,
SecondNumber = 2,
SelectedOperation = Operation.Divide
};
var runner = new WorkflowInvoker(activity);
runner.Extensions.Add(() => workflowRuntimeMock.Object);
var result = runner.Invoke(TimeSpan.FromSeconds(1)); //the runner will return a dictionary with the values of the OutArguments
//verify that the result is as expected
Assert.Equal(2, result["Result"]);
//verify that we logged a message
workflowRuntimeMock.Verify(x => x.LogMessage(It.IsAny<LogMessage>()), Times.Once);
}
[Fact]
public void Divide_ReturnsAsExpected()
{
var activity = new Calculator()
{
FirstNumber = 4,
SecondNumber = 2,
SelectedOperation = Operation.Divide
};
var runner = new WorkflowInvoker(activity);
runner.Extensions.Add(() => workflowRuntimeMock.Object);
var result = runner.Invoke(TimeSpan.FromSeconds(1)); //the runner will return a dictionary with the values of the OutArguments
//verify that the result is as expected
Assert.Equal(2, result["Result"]);
//verify that we logged a message
workflowRuntimeMock.Verify(x => x.LogMessage(It.IsAny<LogMessage>()), Times.Once);
}
L'extrait de code précédent crée une nouvelle instance de l'activité, mais au lieu d'appeler les méthodes directement sur l'instance, il place l'activité à l'intérieur d'un WorkflowInvoker et l'exécute dans le cadre d'un workflow. Le workflow finit par appeler la fonction Execute au niveau de la classe Calculator . Notez que cette fonction est protégée et que vous ne pouvez pas l'invoquer directement, ce qui constitue un avantage indirect de l'utilisation de cette approche.
Cette méthode est généralement utilisée lorsque l'activité dépend du résultat d'autres activités. Dans ce cas, vous devez créer un workflow avec plusieurs activités et laisser WorkflowInvoker l'exécuter.
Joindre UiPath Studio au processus
Parfois, il est nécessaire de tester le code d'activité à l'intérieur de l'exécuteur UiPath.Robot. Pour ce faire, nous pouvons utiliser l'une des deux options suivantes.
Option 1 : System.Diagnostics.Debugger.Launch()
-
Ajoutez
Debugger.Launch()où vous souhaitez que le point d'arrêt atteigne votre code. -
Créez le nouveau package et mettez à jour la version de votre projet dans UiPath.Studio, puis sélectionnez Exécuter.
-
Le débogueur JIT vous invite à choisir une instance de Visual Studio à utiliser pour le débogage.

-
Après avoir sélectionné l'instance, le JIT arrêtera l'exécution à la ligne où
Debugger.Launch()a été ajouté, et à partir de là, le processus de débogage normal pourra commencer.
Option 2 : attacher au processus dans Visual Studio
Une autre option consiste à retarder l'exécution, puis à attacher Visual Studio au processus exécuteur. Bien que cette méthode nécessite plus de surcharge, elle permet de déboguer le code d'activité sans modifications.
-
Pour retarder l'exécution, ajoutez l'activité Delay ou, dans un projet Windows, l'activité Message Box .

-
Sélectionnez Exécuter, puis accédez à Visual Studio et sélectionnez Déboguer > Joindre au processus.

-
Filtrez la liste des processus par
UiPath.Executor, sélectionnez tous les processus, puis cliquez sur Joindre.
Une fois le délai écoulé, l'exécution du processus est interrompue au point d'arrêt que vous avez ajouté dans votre code.