Silverlight 단위 테스트 프레임 워크를 사용하여 일부 View Manager 클래스를 테스트하고 있습니다. 일부 테스트에서는 PropertyChanged 이벤트가 발생해야합니다. 나는 현재 EnqueueConditional 및 WaitHandles의 조합Silverlight에서 이벤트 트리거 대기 단위 테스트
예제이 작동 한
[TestMethod]
[Asynchronous]
[Timeout(1000)]
public void TestNotificationExample()
{
var manager = new UserManager();
var waitHandle = new ManualResetEvent(false);
manager.PropertyChanged += (sender, propChangArgs) =>
{
waitHandler.Set();
};
manager.DoTheThingThatTriggersNotification();
// The notification event fires aynshronously to this
EnqueueConditional (() => waitHandler.WaitOne(0));
// Enqueue other tests here....
EnqueueTestComplete();
}
을 사용하고
. 하지만 저에게 잔소리하는 질문이 있습니다.
실제로 WaitHandle을 사용해야합니까? 내가 방금 bool을 사용했다면 똑같이 수행 할 수 있을까요?
예 2
bool fHasFiredEvent = false;
manager.PropertyChanged += (sender, propChangeArgs) =>
{
fHasFiredEvent = true;
}
manager.DoTheThingThatTriggersNotification();
EnqueueConditional (() => fHasFiredEvent);
EnqueueTestComplete();
아니면이 WaitHandle이 유지하지만, TimeoutAttribute을 잃고 대기에 시간 초과하면 좋을까요?
예 3
[TestMethod]
[Asynchronous]
public void TestNotificationExample()
{
var manager = new UserManager();
var waitHandle = new ManualResetEvent(false);
manager.PropertyChanged += (sender, propChangArgs) =>
{
waitHandler.Set();
};
manager.DoTheThingThatTriggersNotification();
EnqueueCallback (() => Assert.IsTrue(waitHandler.WaitOne(1000));
EnqueueTestComplete();
}
그래서 지금은 세 가지 예를 서면으로 작성했습니다, 그들은 모두 작동합니다. 그래서 내 마지막 질문은
- 입니다. 어느 것이 가장 좋은 성능입니까? (비록 의 차이가 무시할 만하다고해도 그것은 순수하게 학문적으로 야다 야다 야다.)
- 근본적인 결함이 있습니까?
단위 테스트가 복잡하지 않아야한다는 근본적인 결함을 추가 할 것입니다 :-) –