c# - 如何在 WinRT 应用程序中使用 nUnit 测试?

标签 c# nunit winrt-async

我不知道如何在 WinRT 应用程序 (metro) 中使用 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方法。

Ceates a continuation that executes asynchronously when the target Task completes.

因此,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);
    }
}

关于c# - 如何在 WinRT 应用程序中使用 nUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713417/

相关文章:

c# - 如何使用 nunit 测试异步方法

c# - 将 SQliteAsyncConnection 与 UnitOfWork 和存储库模式结合使用

javascript - 在 WinRT 中并行或顺序复制文件

nunit - Nunit 中整个运行的设置和拆卸?

c++ - WinRT API 无法获取 IDeviceIoControl

c# - 如何正确连接C#和MySQL

c# - 使用ftp协议(protocol)下载大文件

c# - 如何注销 session MVC Razor visual studio

c# - ImageList 上的 32 位图像

.net - 一个好的 gradle nunit 插件?