1

My ViewModel 클래스의 일부 명령에 대한 단위 테스트를 작성하고 싶습니다. ICommand의 실행을 테스트하고 싶습니다.단위 테스트 방법 Windows Phone 8 MVVM 비동기 명령?

ICommand.Execute() 메서드는 비동기 메서드를 실행합니다.

이 명령어에 대한 테스트 케이스를 작성하려면 어떻게해야합니까?

참고 : 나는 비주얼 스튜디오의 CTP2 2012 업데이트 2를 전달 윈도우 폰 유닛 테스트 프레임 워크를 사용하고 http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/31/windows-phone-unit-tests-in-visual-studio-2012-update-2.aspx

+0

VS2012 CTP2에서 제공되는 Unit Test 프레임 워크가 아니더라도 널리 사용되는 Silverlight Unit Testing 프레임 워크 (http://www.sharpgis.net/post/2012/)에서 비동기 테스트 메소드를 지원하는 방법은 다음과 같습니다. 12/21/Hacking-the-Silverlight-Unit-Test-to-support-returning-Task.aspx – JustinAngel

답변

0

난 당신이 [Asynchronous] 속성과 방법을 태그 거라고 가정하고 단지 await ICommand.Execute()

를 호출 할 것

비동기 Windows Phone 메서드 테스트의 샘플은 this post을 확인하십시오.

+1

[비동기식]을 추가하려고했으나 네임 스페이스를 확인할 수 없으므로 어떤 어셈블리를 참조해야합니까? –

2

async Task 방법을 테스트하는 것이 훨씬 쉽습니다. 즉, 귀하의 async void Execute 구현은 awaitasync Task 메소드를 가지고 있습니다. 실제로는 단위 테스트를 거쳤습니다.

내장 MSTest 유닛 테스트 프레임 워크는 async void 테스트 방법을 지원하지 않습니다. 다소 복잡하기 때문에 이전 버전과의 호환성 문제가 발생할 수 있습니다. 현재 NUnit은 async void 메서드를 지원하는 유일한 단위 테스트 프레임 워크입니다. 당신이 정말 async void 방법을 검사 할 NUnit를를 사용하지 않을 경우

, 당신은 Stephen Toub's AsyncPump 또는 my AsyncContext (NuGet 볼 수 있습니다)이 각 단위 테스트에 대한 자신의 컨텍스트를 만드는 데 사용할 수 있습니다. 당신은 당신이 방법을 실행 명령을 기다리고 수 있도록

[TestMethod] public async Task TestMyAsyncVoidMethod() {....

에 시험 방법 서명을 변경해야합니다

[TestMethod] 
public void TestMyAsyncVoidMethod() 
{ 
    ICommand myCommand = ...; 

    AsyncContext.Run(() => 
    { 
    myCommand.Execute(); 
    Assert.IsTrue(command-is-in-progress); 
    }); 

    Assert.IsTrue(command-completed); 
} 
0

이 경우, 테스트처럼 보일 것입니다.

관련 문제