- 概述
- 自定义活动
- 将活动迁移到 .NET 6
- 发行说明
- 构建工作流分析器规则
- 构建活动项目设置
- 创建自定义向导
- 按范围划分活动的优先级
- 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
- 智能体 SDK

开发者指南
测试您的活动
实施新活动后,请测试其是否按预期运行。您可以使用以下方法之一测试活动:
单元测试
测试活动代码的最简单、最快的方法是编写隔离活动代码并测试各个方案的单元测试。
例如:
[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类的新实例,并调用ExecuteInternal函数。没有与此上下文中的活动特定相关的内容,基本的单元测试原则适用。
要查看示例,请前往 GitHub 中的示例“计算器”活动。
工作流测试
工作流测试是一种单元测试,它依赖于WorkflowInvoker类将活动放置在工作流中,并像 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中,并将其作为工作流的一部分运行。工作流最终会在Calculator类上调用Execute函数。请注意,此函数受保护,您无法直接调用,这是使用此方法的间接优势。
当活动依赖于其他活动的结果时,通常使用此方法。在这种情况下,您需要创建包含多个活动的工作流,并让WorkflowInvoker执行该工作流。
UiPath Studio 附加到流程
有时,有必要在 UiPath.Robot 执行程序中测试活动代码。 为此,我们可以使用以下两个选项之一。
选项 1:System.Diagnostics.Debugger.Launch()
-
在要在代码中设置断点的位置添加“
Debugger.Launch()”。 -
在 UiPath.Studio 中的项目中构建新包并更新版本,然后选择“运行” 。
-
JIT 调试器会提示你选择要用于调试的 Visual Studio 实例。

-
选择实例后,JIT 将在添加了
Debugger.Launch()的行处停止执行,并从该行开始正常的调试过程。
选项 2:附加到 Visual Studio 中的流程
另一个选项是延迟执行,然后将 Visual Studio 附加到执行程序进程。 虽然此方法需要更多开销,但它允许在不修改的情况下调试活动代码。
-

-
选择“运行” ,然后转到 Visual Studio 并选择“调试” > “附加到流程” 。

-
按
UiPath.Executor筛选流程列表,选择所有流程,然后单击“附加” 。
延迟过后,流程执行将在您在代码中添加的断点处中断。