- 概要
- カスタム アクティビティ
- アクティビティを .NET 6 に移行する
- リリース ノート
- Building Workflow Analyzer Rules
- アクティビティ プロジェクト設定の構成
- カスタム ウィザードの作成
- スコープによるアクティビティの優先度設定
- 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
アクティビティをテストする
新しいアクティビティの実装後は、想定どおりに動作するかをテストすることが重要です。 アクティビティは次のいずれかの方法でテストできます。
最も簡単かつ迅速にアクティビティ コードをテストする方法は、単体テストを記述してアクティビティ コードを分離し、個々のシナリオをテストすることです。
例:
[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.Robot Executor 内でアクティビティ コードをテストする必要があります。 これを実現するには、2 つのオプションのいずれかを使用できます。
- ブレークポイントがコードにヒットする場所に
Debugger.Launch()
を追加します。 - UiPath.Studio で新しいパッケージを構築し、プロジェクトのバージョンを更新してから、[実行] を選択します。
-
JIT デバッガーでは、デバッグに使用する Visual Studio インスタンスを選択するように求められます。
-
インスタンスを選択すると、JIT は
Debugger.Launch()
が追加された行で実行を停止し、そこから通常のデバッグ プロセスを開始できます。
別のオプションは、実行を遅らせてから、Visual Studio を Executor プロセスにアタッチする方法です。 この方法ではオーバーヘッドが増加しますが、アクティビティ コードを変更せずにデバッグできます。
-
実行を遅延させるには、[待機] アクティビティを追加するか、Windows プロジェクトの場合は、[メッセージ ボックス] アクティビティを追加します。
-
[実行] を選択し、Visual Studio に移動して [デバッグ] > [プロセスにアタッチ] を選択します。
-
プロセス リストを
UiPath.Executor
でフィルター処理し、すべてのプロセスを選択して [アタッチ] をクリックします。
遅延が経過すると、コードに追加したブレークポイントでプロセスの実行が中断されます。