sdk
latest
false
- 概述
- 自定义活动
- 将活动迁移到 .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
重要 :
请注意此内容已使用机器翻译进行了部分本地化。
开发者指南
Last updated 2024年10月25日
测试您的活动
实施新活动后,测试其是否按预期工作非常重要。 您可以通过以下方式之一测试您的活动。
测试活动代码的最简单、最快的方法是编写隔离活动代码并测试各个方案的单元测试。
例如:
[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 机器人运行一样运行该活动。
让我们看一下这个示例:
[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.Robot 执行程序中测试活动代码。 为此,我们可以使用以下两个选项之一。
- 在要在代码中设置断点的位置添加“
Debugger.Launch()
”。 - 在 UiPath.Studio 中构建新包并更新项目中的版本,然后选择“运行” 。
-
JIT 调试器会提示你选择要用于调试的 Visual Studio 实例。
-
选择实例后,JIT 将在添加了
Debugger.Launch()
的行处停止执行,并从该行开始正常的调试过程。