1

私は StateMachineWorkflow の単体テストを行っており、テスト プロジェクトをクリックしてテスト メソッドを作成し、Add - UnitTest を作成しています。プロジェクト ウィンドウで、テストするワークフローとその中のすべてのメソッドを選択します。

Visual Studio は、ワークフローへのアクセサを使用してテスト プロジェクトに Test Reference フォルダーを生成しました。また、テストに必要なすべての TestMethod() も生成されました。すべてのテスト メソッドは、MyWorkflow_Accessor ターゲット = new MyWorkflow_Accessor() を使用します。関数を呼び出す必要があるときは、target.SendEmail() のようなことをするだけです。

1 つのことを除いて、すべて正常に動作します。Workflow の WorkflowInstanceId を使用できません。コードがこれを使用する行に到達すると、ワークフローで例外がスローされます。「これは無効な設計時の操作です。実行できるのは、コードでWorkflowIDを注入することは可能ですか? この状況の回避策はありますか? 多くの関数で WorkflowInstanceId を使用していますが、テストに合わせてワークフロー コードを変更することはお勧めできません。なぜなら、問題はワークフローではなくテストにあると考えているからです。

4

1 に答える 1

0

状態マシンの更新で WF 3.5 または WF4 を使用しているかどうかは、質問からは明らかではありません。後者の場合、Microsoft.Activities.UnitTestingを使用してワークフローをテストできます。

ただし、WF 3.5 を使用しているようです。これが新しい開発であれば、WF4 への移行を真剣に検討します。Microsoft は基本的に WF を書き直しました。切り替えが早ければ早いほど、移行パスはより簡単になります。

それ以外の場合は、MSDN に WF 3.5 でのテストに関する情報があります。

于 2011-11-02T12:48:29.177 に答える