- 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
Probar tu actividad
Después de implementar la nueva actividad, es importante probar que funciona como se espera. Puedes probar tu actividad de una de las siguientes maneras.
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 llamamos 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.
Veamos este ejemplo:
[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 ejecutamos como parte de un flujo de trabajo. El flujo de trabajo llamará finalmente a la función Execute
en la clase Calculator
. Ten en cuenta que esta función está protegida y no podemos 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.
- 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.
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.