我遇到了以下问题。使用等待等待返回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测试适配器?)。
有人已经看过这个问题吗?或者有任何其他信息?