2013-03-04 57 views
1

我正在使用Windows Phone 8應用程序的WPToolkitTestFx單元測試框架。我在執行Assert.Fail()Assert.IsFalse(true)時出現錯誤。WPToolkitTestFx:斷言失敗時獲取未處理的異常

類型 'Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException' 的第一次機會異常發生在Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.DLL

任何解決上述錯誤。

這裏的源代碼

[TestMethod] 
    [Asynchronous] 
    [Description("Test2: Sample asynchronous test")] 
    public void Test2() 
    { 
     // this test executes asynchronously 
     Deployment.Current.Dispatcher.BeginInvoke(() => 
     { 
      // ... and then fails 

      Assert.IsFalse(true); 

      EnqueueTestComplete(); 
     }); 
    } 

感謝, 拉古

+0

嗯,這就是重點 - 你的斷言失敗了......這引發了一個異常。你會做什麼? – 2013-03-04 12:37:35

+1

它應該添加結果作爲失敗,並應繼續其他測試,但它會崩潰整個應用程序。 – Ragunathan 2013-03-21 12:25:22

回答

-1

問題,是不是你的測試失敗斷言的正常組成部分?如果是這樣,你需要指導框架,期望這樣的例外發生

[TestMethod, Asynchronous] 
[Description("Test2: Sample asynchronous test")] 
[ExpectedException(typeof(AssertFailedException))] 
public void Test2() 
{ 
    // this test executes asynchronously 
    Deployment.Current.Dispatcher.BeginInvoke(() => 
    { 
     // ... and then fails 

     Assert.IsFalse(true); 

     //TestComplete(); 
    }); 
} 

此外,我注意到你標記方法,異步,但你不使用的EnqueueDelay(TimeSpan), EnqueueCallback(), EnqueueTestComplete()異步調用的方法是使那些該方法功能異步。

+0

對不起,我正在使用EnqueueTestComplete(),我編輯了我的帖子。我添加了ExpectedException,但仍然使應用程序崩潰。 – Ragunathan 2013-03-21 12:26:28

+0

這是一個壞主意 - 測試失敗,AssertFailedException是框架報告的方式。 – 2013-03-21 13:16:00

0

http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/20/windows-phone-toolkit-overview.aspx下面的示例代碼時,我可以看到類似的東西。

的異常發生,看看它是否正常:

A first chance exception of type 'Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException' occurred in Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.DLL

此外,如果調試器附加到您的設備/仿真器,調試器將打破這樣你就可以找出試驗失敗是。

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) 
    { 
     if (Debugger.IsAttached) 
     { 
      // An unhandled exception has occurred; break into the debugger 
      Debugger.Break(); // <- !!! application will stop in debugger here !!! 
     } 
    } 

但是如果繼續該項目(按F5),或在調試器下運行的不是,你將看到應用程序繼續運行,並不會得到退出。

這可以讓你看到你的測試結果。