簡體   English   中英

如何在WinRT應用程序中使用nUnit測試?

[英]How to use nUnit Tests in WinRT application?

我不知道如何在WinRT應用程序(地鐵)中使用nUnit。 我編寫此代碼並運行測試(使用Resharper測試運行程序)。 測試通過了。 為什么?

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);
        }
    }
}

問題是:

您使用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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM