1

저는 StateMachineWorkflow를 단위 테스트하고 테스트 프로젝트를 클릭하여 테스트 메소드를 만들고 Add - UnitTest를 만듭니다. 프로젝트 창에서 테스트 할 워크 플로와 그 안에있는 모든 메서드를 선택합니다.UnitTest WorkflowInstanceID 예외

Visual Studio에서 워크 플로의 접근자를 사용하여 테스트 프로젝트에 테스트 참조 폴더를 생성했습니다. 또한 테스트에 필요한 모든 TestMethod()를 생성했습니다. 모든 테스트 메소드는 MyWorkflow_Accessor target = new MyWorkflow_Accessor()를 사용합니다. 함수를 호출해야 할 때 target.SendEmail()과 같은 작업을 수행합니다.

다 한 가지를 제외하고 잘 작동 : 내가 워크 플로 코드는이이 워크 플로에서 예외를 throw 사용하는 라인, "에 도달 할 때 잘못된 설계 시간이의 WorkflowInstanceId을 사용할 수 없습니다 런타임시에만 작업을 수행 할 수 있습니다. " 코드로 WorkflowID를 주입 할 수 있습니까? 이 상황에 대한 해결 방법이 있습니까? 많은 함수에서 WorkflowInstanceId를 사용하고 문제가 워크 플로가 아니라 테스트에 있다고 생각하기 때문에 워크 플로 코드를 내 테스트와 일치하도록 변경하는 것이 좋습니다.

답변

0

상태 시스템 업데이트와 함께 WF 3.5 또는 WF4를 사용 중인지 확실하지 않습니다. 후자의 경우 Microsoft.Activities.UnitTesting을 사용하여 워크 플로를 테스트 할 수 있습니다.

WF 3.5를 사용하는 것처럼 들리지만. 이것이 새로운 개발이라면, 나는 WF4로 옮길 것을 진지하게 고려할 것이다. Microsoft는 기본적으로 WF를 다시 작성합니다. 전환이 빠를수록 마이그레이션 경로가 더 쉬워집니다.

그렇지 않으면 testing with WF 3.5 on MSDN에 대한 정보가 있습니다.

+0

안녕하십니까. 답변 해 주셔서 감사합니다. 나는 WF 3.5를 사용하고있다. Visual Studio 2010으로 작업 할 수 있습니다. 작업중인 프로젝트가 매우 발전했기 때문에 WF 4.0으로 옮길 수 없습니다. 유닛 테스트가 생성하는 접근자를 이용하려했지만 지금까지는 워크 플로우 내부의 함수에 액세스 할 수 있기 때문에 운이 없다.하지만 WorkflowInstanceID와 같은 것은 접근 자에 의해 호출 될 때 작동하지 않는다. – Brazeta

+0

죄송합니다. WF 3.5에 대한 경험이 없습니다. 아마도 다른 사람이 해결책을 제안 할 수 있습니다. – TrueWill

+0

어쨌든 도움을 주셔서 감사합니다 :) – Brazeta