MSTest를 사용하여 비동기 코드를 테스트하는 방법


90

저는 매우 간단한 비동기 코드를 작성하고 있습니다. 스레드에서 파일을 저장하는 것뿐입니다.

Microsoft Visual Studio Team System 2008의 MSTest 단위 테스트 프레임 워크를 사용하여이 코드를 테스트하고 싶습니다.

어떻게해야합니까?

메서드가 반환 될 때까지 테스트 메서드를 간단히 차단하고 싶습니다. 이 작업을 수행하는 몇 가지 방법을 상상할 수 있지만 이에 대한 모범 사례 나 도우미 클래스가 없다는 사실에 놀랐습니다.

나는 볼 을 많이 실버 라이트하지만 일반적인 아무것도.


4
복제? stackoverflow.com/questions/1174702/... (I 제공된 답변에 직접 사용되는 테스트하는 프레임 워크 관련이없는 생각)
프레드릭 Mörk

1
네 그렇습니다. 대답은 제 생각과 같을 것입니다.
Andras Zoltan

답변:


164

Visual Studio 2012 (이전의 "Visual Studio 11") 는 비동기 테스트 지원을 도입했습니다 . 다음과 같이 보입니다.

[TestMethod]
public async Task FooTest()
{
   var result = await SomeAsyncOperation();
   Assert.IsTrue(someCondition);
}

코멘트에 언급 한 바와 같이, 반환 형식은 중요하다 . 메서드를 returning으로 선언하면 작동하지 않습니다 .Taskvoid


59
있습니다 Task반환 형식이 필수입니다 - void하지 않습니다 일 (적어도하지 VS2013 업데이트 4)
오핫 슈나이더

3
(이 때문에 작동하지 않습니다 void비동기 방법을 -returning 기다려온 할 수 없음)
리처드 Szalay에게

1
: @RichardSzalay은 :이 작업을 할 수있다, NUnit과 그것을 수행하는 방법을 여기에서 볼 stackoverflow.com/questions/15031681/...
빔 COENEN

-3

System.IO 메서드를 직접 호출하는 대신 SystemWrapper 라이브러리를 대신 사용해보십시오 . 그런 다음 테스트에서 원하는대로 호출을 모의 처리하고 오류 조건을 포함하여 원하는대로 테스트에 반환하고 논리가 예상대로 작동하는지 확인할 수 있습니다.

예제를 보려면 RhinoMocks와 함께 사용하는 방법을 보여주는 이 블로그 게시물 을 참조하십시오 .


3
나는 질문에 대한 답변으로이 표시되지 않습니다
SteveC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.