- Información general
- Actividades personalizadas
- Migrar actividades a .NET 6
- Notas relacionadas
- Construir reglas para el Analizador de flujo de trabajo
- Crear actividades de Configuración del proyecto
- Crear Asistentes personalizados
- Priorizar las actividades según su alcance
- 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
- Desencadenadores SDK
- SDK de agentes

Guía del desarrollador
Después de implementar la nueva actividad, prueba que funciona como se espera. Puedes probar tu actividad utilizando uno de estos métodos:
La forma más fácil y rápida de probar el código de actividad es escribir pruebas unitarias que aíslen el código de actividad y prueben escenarios individuales.
Por ejemplo:
[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);
}Calculator y llama a la función ExecuteInternal . No hay nada específico relacionado con las actividades en este contexto y se aplican los principios básicos de las pruebas unitarias.
Para ver un ejemplo, ve a la actividad Calculadora de muestra en GitHub.
WorkflowInvoker para colocar la actividad dentro de un flujo de trabajo y ejecutarla como lo haría UiPath Robot:
[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);
}WorkflowInvoker y la ejecuta como parte de un flujo de trabajo. El flujo de trabajo finalmente llama a la función Execute en la clase Calculator . Ten en cuenta que esta función está protegida y no puedes invocarla directamente, lo cual es un beneficio indirecto de utilizar este enfoque.
WorkflowInvoker lo ejecute.
A veces, es necesario probar el código de actividad dentro del ejecutor de UiPath.Robot. Para lograrlo, podemos utilizar una de dos opciones.
Opción 1: System.Diagnostics.Debugger.Launch()
- Añade
Debugger.Launch()donde quieras que el punto de interrupción llegue a tu código. - Crea el nuevo paquete y actualiza la versión en tu proyecto en UiPath.Studio, y luego selecciona Ejecutar.
-
El depurador JIT te pide que elijas una instancia de Visual Studio para la depuración.
-
Después de seleccionar la instancia, el JIT detendrá la ejecución en la línea donde se añadió
Debugger.Launch()y desde allí puede comenzar el proceso de depuración normal.
Opción 2: Adjuntar al proceso en Visual Studio
Otra opción es retrasar la ejecución y luego adjuntar Visual Studio al proceso ejecutor. Aunque este método requiere más gastos generales, permite depurar el código de actividad sin modificaciones.
-
Para retrasar la ejecución, añade la actividad Retraso o, en un proyecto de Windows, la actividad Cuadro de mensaje .
-
Selecciona Ejecutar y, a continuación, ve a Visual Studio y selecciona Depurar > Adjuntar al proceso.
-
Filtra la lista de procesos por
UiPath.Executor, selecciona todos los procesos y luego haz clic en Adjuntar.
Una vez transcurrido el retraso, la ejecución del proceso se interrumpe en el punto de interrupción que has añadido en tu código.