小编Ric*_*uer的帖子

VS 2017中的单元测试.Net Framework 3.5项目

我有一些带有测试库的旧项目。项目(和单元测试)的目标是.NET 3.5。我们正在使用VS 2017企业版。

我能够找到一些nuGet软件包,这些软件包可以正确构建测试,但是Test Explorer根本看不到测试。我认为这是因为没有测试适配器。

我使用的软件包是:

  • Microsoft.UnitTestFramework.Extensions v1.0.0.3
  • Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated v15.0.26228

由于缺少.Net 3.5支持,我发现大多数软件包无法安装。在2017年这是有道理的,但仍然如此。

有谁知道我可以使用什么测试适配器使VS 2017 Test Explorer看到旧的.Net 3.5单元测试?

我不能做的事情:

  • 使用其他版本的VS
  • 将库重新定位到其他框架版本(它们用于SharePoint 2010)
  • 改写为不同的测试框架,所有的测试(除非有属性的一个非常简单的平移/断言我可以做的查找和替换,因为有很多的测试)

感谢任何提示!

unit-testing mstest visual-studio-test-runner

6
推荐指数
0
解决办法
416
查看次数

在异步单元测试中调用Assert.Inconclusive()被报告为失败

我有一系列连接到Azure存储模拟器的单元测试.在安装程序中,我的代码检查模拟器的端口是否有监听,如果没有设置标志StorageNotAvailable.

在我的每个测试中,我都有一些代码......

if ( StorageNotAvailable )
    Assert.Inconclusive( "Storage emulator is not available" )

// where storage emulator is available, continue as normal
Run Code Online (Sandbox Code Playgroud)

正如所料,当测试返回时,void它在测试资源管理器中正确报告为"不确定".

当测试运行一些异步方法,并且[TestMethod]签名返回时Task,测试将在TestExplorer中报告为"失败"而不是"不确定".

如何让异步方法报告为不确定?

编辑

可能需要一些额外的细节.以下是我为了证明我所看到的问题而进行的一些示例测试.

[TestMethod]
public void MyTestMethod()
{
    Assert.Inconclusive( "I am inconclusive" );
}

[TestMethod]
public async Task MyTestMethodAsync()
{
    Assert.Inconclusive( "I am an error" );
}
Run Code Online (Sandbox Code Playgroud)

行动中违规代码的图像

测试资源管理器错

测试资源管理器不确定

一些环境细节也可能是有序的:

  • Windows 10 x64 1703 Build 15063.608
  • Visual Studio Enterprise 2017 15.3.5
  • .NET 4.7.02046
  • VS扩展可能是相关的
    • Microsoft Visual Studio测试平台
    • MSTest V2创建单元测试扩展
    • MSTest …

c# unit-testing mstest async-await vstest

5
推荐指数
1
解决办法
862
查看次数