等待的异步NUnit测试未在VS2013测试资源管理器中列出

时间:2015-03-21 16:45:10

标签: c# visual-studio-2013 nunit async-await .net-4.5

我遇到了以下问题。使用等待等待返回GetCustomDataAsync的调用的NUnit异步测试未在测试资源管理器中列出。同样,异步测试等待返回int的调用GetDataAsync显示在测试资源管理器中。我将问题分解为这个最小的代码示例:

public class CustomClient
{
    public async Task<int> GetDataAsync(int a, int b)
    {
        int result = a + b;
        // doing some work async
        await Task.Delay(250);
        return result;
    }

    public async Task<CustomClass> GetCustomDataAsync(int count)
    {
        CustomClass result = new CustomClass(count);
        // doing some work async
        await Task.Delay(250);
        return result;
    }
}

public class CustomClass
{
    private int _count;
    public CustomClass(int count)
    {
        _count = count;
    }

    public int Count
    {
        get { return _count; }
        set { _count = value; }
    }
}

[TestFixture]
public class CustomClientUnitTests
{
    [Test]
    public async Task TestListedInTestExplorer()
    {
        int a = 2;
        int b = 3;
        int expectedResult = 6;

        CustomClient sut = new CustomClient();
        int result = await sut.GetDataAsync(a, b);

        Assert.That(result, Is.EqualTo(expectedResult));
    }
    [Test]
    public async Task Test_NOT_ListedInTestExplorer()
    {
        int inCount = 5;
        int expectedOutCount = 6;

        CustomClient sut = new CustomClient();
        CustomClass customResult = await sut.GetCustomDataAsync(inCount);

        Assert.That(customResult.Count, Is.EqualTo(expectedOutCount));
    }
}

CustomClient和CustomClass位于ClassLibrary中。 UnitTests也在单独的ClassLibrary中。我在UnitTest项目中添加了对生产代码的引用。

在UnitTest项目中,我安装了以下NuGet包:

  • VS2012和VS2013的NUnitTestAdapter,v1.2

  • NUnit,v2.6.4

到目前为止我已经尝试过但没有成功:

  • 使用/不使用管理员权限启动VS2013。

  • 各种“清洁解决方案”和“构建/重建解决方案”。

  • 更改了测试 - &gt;测试设置 - &gt;默认处理器架构:x86 / x64。

  • 将第二次单元测试移至另一个单元测试类。

我在这里缺少什么,或者做错了什么?为什么VS2013测试资源管理器中未列出第二个异步单元测试?

修改

我已经做了进一步的测试,试图找出问题:

  • 使用MSTest而不是NUnit,async / await方法适用于两个单元测试,两个测试都按预期在测试资源管理器中列出。

  • 使用ReSharper 9(使用的当前演示版/试用版)作为Test Explorer / Runner和NUnit,两个测试按预期在ReSharper Unit Test Explorer中列出。

到目前为止,看起来NUnit和VS2013测试资源管理器的问题,我认为,这是“集成”的问题(VS2013的NUnit测试适配器?)。

有人已经看过这个问题吗?或者有任何其他信息?

0 个答案:

没有答案