- Visão geral
- Atividades personalizadas
- Migrando Atividades para o .NET 6
- Notas de Versão
- Como Criar Regras do Analisador de Fluxo de Trabalho
- Como criar as configurações de projeto de atividades
- Como criar assistentes personalizados
- Priorizar atividades por escopo
- 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
- Gatilhos SDK
Guia do desenvolvedor
Como testar sua atividade
Após implementar a nova atividade, é importante testar para ver se funciona como esperado. Teste sua atividade de uma das seguintes maneiras.
A maneira mais fácil e rápida de testar o código da atividade é escrever testes de unidade que isolam o código da atividade e testam cenários individuais.
Por exemplo:
[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
e chamamos a função ExecuteInternal
. Não há nada específico relacionado a atividades neste contexto, e os princípios básicos do teste de unidade se aplicam.
Para ver um exemplo, acesse a atividade Calculator de exemplo no GitHub.
WorkflowInvoker
para colocar a atividade dentro de um fluxo de trabalho e executá-la como seria executada pelo UiPath Robot.
Vamos analisar este exemplo:
[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
e a executamos como parte de um fluxo de trabalho. O fluxo de trabalho eventualmente chamará a função Execute
na classe Calculator
. Observe que essa função está protegida e não podemos invocá-la diretamente, que é um benefício indireto do uso dessa abordagem.
WorkflowInvoker
executá-lo.
Às vezes, é necessário testar o código da atividade dentro do executor do UiPath.Robot. Para conseguir isso, podemos usar uma de duas opções.
- Adicione
Debugger.Launch()
onde você deseja que o ponto de interrupção atinja seu código. - Construa o novo pacote e atualize a versão em seu projeto no UiPath.Studio, depois selecione Executar.
-
O Depurador JIT solicita que você escolha uma instância do Visual Studio a ser usada na depuração.
-
Após selecionar a instância, o JIT interromperá a execução na linha em que o
Debugger.Launch()
foi adicionado e, a partir dai, o processo de depuração normal poderá ser iniciado.
Outra opção é adiar a execução e depois anexar o Visual Studio ao processo executor. Embora esse método exija mais sobrecarga, ele permite depurar o código da atividade sem modificações.
-
Para atrasar a execução, adicione a atividade Delay ou, em um projeto do Windows, a atividade Message Box .
-
Selecione Executar, vá para o Visual Studio e selecione Depurar > Anexar ao processo.
-
Filtre a lista de processos por
UiPath.Executor
, selecione todos os processos e, em seguida, clique em Anexar.
Depois que o atraso passar, a execução do processo será interrompida no ponto de interrupção que você adicionou no seu código.