.net - MSpec 和 Visual Studio 2017 集成
问题描述
我希望能够从 Visual Studio 2017 测试资源管理器运行 MSpec 测试(规范)。我有一个 .NET Framework 4.6.1 项目,我正在使用以下 NuGet 包:Machine.Specifications.Runner.VisualStudio
. 我看到测试资源管理器中列出的测试。但是,当我右键单击并选择“运行选定的测试”时,测试会从测试资源管理器中消失并且不会运行。
我在 Visual Studio 2015 中看到过这个较旧的问题处理同样的问题。根据博客文章,运行器应该支持测试资源管理器。还是仅在使用 .NET Core 项目时才会出现这种情况?
我想知道选项是否仍然:
- 使用 ReSharper(或其他插件)
- 使用控制台运行器(确实有效)
或者我做错了什么。
编辑:我仅在未实施规范的情况下观察我所描述的行为。已实现的规范,无论它们是通过还是失败,都在测试资源管理器中可见。我认为这一定是 MSpec Visual Studio 运行器的错误或预期行为。
解决方案
我不确定这是否会对您有所帮助,但您可以试一试。
在几年不使用 MSpec 后,我重新开始使用它(我在 10 多年前开始使用它......)并且很失望地看到我无法通过测试资源管理器直接在 VSCode 中运行测试(使用.NET Core 测试资源管理器扩展)。
我的解决方案是使用 xUnit 创建 shims,它通过 xUnit VSTest 适配器运行单个 It 代表每个规范。
using Machine.Specifications;
using Machine.Specifications.Model;
using FluentAssertions;
using Xunit;
namespace Specs {
[Subject("MSpec from Xunit")]
public class When_yo_is_set_from_foo {
public When_yo_is_set_from_foo() {
context();
of();
}
static int foo;
static int yo;
Establish context = () =>
foo = 10;
Because of = () =>
yo = foo;
It should_be_10 = () =>
yo.Should().Be(10);
[Fact]
public void It_should_be_10() => should_be_10();
}
}
这将允许您在 VS(代码或完整)中运行测试,然后您可以单独运行 MSpec 测试作为 CI 的一部分。
在此处发布推文:https ://twitter.com/kfinley/status/1111637434289319938
推荐阅读
- django - 如何在 Django 中创建自定义菜单结构
- java - 如何计算与视锥体的碰撞
- android - 如何从 Firebase 推送通知中获取字幕
- html - 如何绑定 HTML 表单和 nodejs 代码
- spring-cloud - 从long类型的HashMap中接收到整数类型的LinkedHashMap?
- python - Python 3.7 既不从命令行也不从 pycharm 打印
- java - 如何从 java soap web 服务返回 JSON 结果
- php - 在php中foreach循环内的第一项之后添加条件
- javascript - React Router 生成的链接默认被阻止
- android - 在 TextView 中显示数据时如何在 Sqlite 中添加换行符