2012-10-03 26 views
2

我不知道如何在WinRT應用程序(城域)中使用nUnit。 我編寫這段代碼並運行測試(使用Resharper測試運行器)。 測試通過。爲什麼?如何在WinRT應用程序中使用nUnit測試?

using System.Threading.Tasks; 
using NUnit.Framework; 
namespace UnitTestInWinRT 
{ 
    [TestFixture] 
    public class NUnitClassTest 
    { 
     [Test] 
     public void TestnUnitAsyncTest() 
     { 
      var number = GetNumberAsync(7); 
      number.ContinueWith(n => Assert.AreEqual("string is 6", n.Result)); 
     } 
     public Task<string> GetNumberAsync(int n) 
     { 
      return Task.Run(() => "string is " + n); 
     } 
    } 
} 

回答

7

的問題是:

您使用ContinueWith方法。

當目標任務完成時停止執行異步執行的延續。

因此,NUnit在其他線程中運行您的lamba,並結束測試方法。 AssertionExcecption發生在其他線程,這就是爲什麼測試通過。

如果您在同一個線程中運行它,則測試將按預期失敗。

[TestFixture] 
public class NUnitClassTest 
{ 
    [Test] 
    public void TestnUnitAsyncTest() 
    { 
     var number = GetNumberAsync(7); 
     number.Wait(); 
     Assert.AreEqual("string is 6", number.Result); 
    } 

    public Task<string> GetNumberAsync(int n) 
    { 
     return Task.Run(() => "string is " + n); 
    } 
} 
相關問題