BDD - Specflow BDD 执行测试,生成测试报告 VSTest 篇

article/2025/10/15 15:17:31

BDD - Specflow BDD 执行测试,生成测试报告 VSTest 篇

  • 引言
  • VSTest.Console.exe 命令
    • 启动
    • 命令选项
  • VSTest.Console.exe 执行测试
    • NUnit 项目
    • MSTest 项目
    • Xunit 项目
    • SpecRun 项目
  • Specflow 生成测试报告
    • specflow.exe 命令
    • 生成 NUnit 项目测试报告
    • 生成 MSTest 项目测试报告
    • 生成 Xunit 项目测试报告
    • 生成 SpecRun 项目测试报告

引言

前面有介绍 Specflow 基于不同 Unit Test Provider (Xunit,MSTest,NUnit,SpecRun) 的实践系列:

BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun
BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit
BDD - SpecFlow BDD 测试实践 SpecFlow 模板
BDD - SpecFlow BDD 测试实践 SpecFlow + MSTest
BDD - SpecFlow BDD 测试实践 SpecFlow + NUnit

上述实践,我们都是通过 Test Explore 界面来执行测试的,其中 BDD - SpecFlow BDD 测试实践 SpecFlow 模板 用到 SpecFlow+ LivingDoc 生成测试报告,BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun 运行后会自动生成测试报告,剩下 NUnit/MSTest/Xunit 运行测试时不会自动生成测试报告。

参考 Specflow Reporting 主要基于两种 Unit Test Provider,NUnit 和 MSTest。上文 BDD - Specflow BDD 执行测试,生成测试报告 NUnit 篇 只适用于 NUnit test,今天介绍另外一种 VSTest。

VSTest.Console.exe 命令

VSTest.Console.exe 是用于运行测试的命令行工具。

启动

  1. VSTest.Console.exe 命令提示所在路径:
    C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow
    在这里插入图片描述

  2. 可通过 VS 启动:
    在这里插入图片描述

  3. 可通过 windows 开始菜单启动:
    在这里插入图片描述

命令选项

运行 VSTest.Console/? 可以查阅所有选项以及对应的简短说明。

在这里插入图片描述

在这里插入图片描述

常规命令行选项:

选项描述
[测试文件]从指定文件运行测试。 用空格分隔多个测试文件名。示例:mytestproject.dll、mytestproject.dll myothertestproject.exe
/Settings:[文件名]使用其他设置(如数据收集器)运行测试。 有关详细信息,请参阅使用 .runsettings 文件配置单元测试, 示例:/Settings:local.runsettings
/Tests:[测试名]运行其名称包含提供的值的测试。 若要提供多个值,请使用逗号将这些值分隔。示例:/Tests:TestMethod1,testMethod2, /Tests 命令行选项不能与 /TestCaseFilter 命令行选项一起使用 。
/Parallel指定并行执行的测试。 默认情况下,最多可使用计算机上的所有可用内核。 可在设置文件中配置要使用的内核数。
/Enablecodecoverage在测试运行中启用数据诊断适配器 CodeCoverage。如果未使用设置文件指定设置,则将使用默认设置。
/InIsolation在隔离的进程中运行测试。这种隔离使 vstest.console.exe 进程不太可能在测试出错时停止,但测试的运行速度可能较慢。
/UseVsixExtensions此选项使 vstest.console.exe 进程使用或跳过在测试运行中安装的 VSIX 扩展(如果有)。此选项已弃用。 从 Visual Studio 的下一个主版本开始,此选项可能会删除。 转为作为 NuGet 包提供的使用扩展。示例:/UseVsixExtensions:true
/TestAdapterPath:[路径]强制 vstest.console.exe 进程使用测试运行中指定路径(如果有)内的自定义测试适配器。示例:/TestAdapterPath:[pathToCustomAdapters]
/Platform:[平台类型]强制使用给定的平台,而不是根据当前运行时确定的平台。 在 Windows 上,此选项强制只能使用 x86 和 x64 平台。 ARM 选项会中断,并将导致大多数系统上使用 x64。若要在有效值(例如 ARM64)的列表中未列出的运行时上运行,请勿指定此选项。有效值为 x86、x64 和 ARM。
/FailWhenNoTestsFound:[boolean]设置为 true 时,如果未发现任何测试,则返回非零值。
/Framework: [Framework 版本]要用于执行测试的目标 .NET 版本。示例值有 Framework35、Framework40、Framework45、FrameworkUap10、.NETCoreApp,Version=v1.1。TargetFrameworkAttribute 用于从程序集中自动检测此选项,并在属性不存在时默认为 Framework40。 如果从 .NET Core 程序集删除 TargetFrameworkAttribute,则必须显式指定此选项。如果将目标框架指定为 Framework35,则测试在 CLR 4.0“兼容模式”下运行。示例:/Framework:framework40
/TestCaseFilter:[表达式]运行与给定表达式匹配的测试 < Expression > 的格式为 < property > = < value >[ < Expression > ]。示例:/TestCaseFilter:“Priority=1” 示例:/TestCaseFilter:“TestCategory=Nightly or (这里用逻辑符号,单竖线)FullyQualifiedName=Namespace.ClassName.MethodName” /TestCaseFilter 命令行选项不能与 /Tests 命令行选项一起使用 。有关创建和使用表达式的信息,请参阅 TestCase 筛选。
/?显示使用情况信息。
/Logger:[uri/friendlyname]为测试结果指定一个记录器。 多次指定参数,以启用多个记录器。示例:要将结果记录到 Visual Studio 测试结果文件 (TRX),请使用/Logger:trx[;LogFileName=<默认为唯一文件名>]
/ListTests:[文件名]列出给定测试容器中的已发现的测试。
/ListDiscoverers列出已安装的测试发现器。
/ListExecutors列出已安装的测试执行器。
/ListLoggers列出已安装的测试记录器。
/ListSettingsProviders列出已安装的测试设置提供程序。
/Blame在意见模式中运行测试。 此选项有助于隔离导致测试主机出现故障的有问题的测试。 检测到故障时,它会在 TestResults//_Sequence.xml 中创建一个序列文件,用于捕获在出现故障之前运行的测试的顺序。 有关详细信息,请参阅意见数据收集器。
/Diag:[文件名]将诊断跟踪日志写入指定文件。
/ResultsDirectory:[path]如果不存在,则将在指定路径中创建测试结果目录。示例:/ResultsDirectory:
/ParentProcessId:[parentProcessId]负责启动当前进程的父进程的进程 ID。
/Port:[port]套接字连接和接收事件消息的端口。
/Collect:[dataCollector friendlyName]为测试运行启用数据收集器。 详细信息。

VSTest.Console.exe 执行测试

NUnit 项目

BDD - SpecFlow BDD 测试实践 SpecFlow + NUnit

执行下面命令:
vstest.console.exe C:\Work\SpecFlowDemo\SpecflowNUnit\bin\Debug\SpecflowNUnit.dll /Logger:trx;LogFileName=testResult.trx /ResultsDirectory:C:\Work\SpecFlowDemo\NunitTest

在这里插入图片描述

Visual Studio 测试结果文件 (TRX) 生成

在这里插入图片描述

MSTest 项目

BDD - SpecFlow BDD 测试实践 SpecFlow + MSTest

执行下面命令:

vstest.console.exe C:\Work\SpecFlowDemo\SpecflowMSTest\bin\Debug\SpecflowMSTest.dll /Logger:trx;LogFileName=testResult.trx /ResultsDirectory:C:\Work\SpecFlowDemo\MSTest

在这里插入图片描述

Visual Studio 测试结果文件 (TRX) 生成

在这里插入图片描述

Xunit 项目

BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit

执行下面命令:
vstest.console.exe C:\Work\SpecFlowDemo\SpecFlowXunitDemo\bin\Debug\SpecFlowXunitDemo.dll /Logger:trx;LogFileName=testResult.trx /ResultsDirectory:C:\Work\SpecFlowDemo\XunitTest
在这里插入图片描述
Visual Studio 测试结果文件 (TRX) 生成

在这里插入图片描述

SpecRun 项目

BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun

执行下面命令:

在这里插入图片描述在这里插入图片描述

Visual Studio 测试结果文件 (TRX) 生成
在这里插入图片描述
并且 Html 测试报告也生成了。

在这里插入图片描述

Specflow 生成测试报告

前面 VSTest.Console.exe 命令执行测试生成的 Visual Studio 测试结果文件 (TRX) 并不是我们需要的测试报告,我们可用 Specflow 将 Visual Studio 测试结果文件 (TRX) 转换成 可读性更好的 Html 测试报告。但是只适用于 Specflow 2 版本,Specflow 3 已经移除了此功能。 具体细节请参考 Specflow Reporting

specflow.exe 命令

specflow.exe 用于生成测试报告,只有 Specflow 2 有这个命令,所以需要装 Specflow 2 版本。在 BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit 项目中装了 Specflow 2.4 版本,所以我们就可以用这个版本了来生成测试报告。

specflow.exe 所在目录在 C:\Users\userName\ .nuget\packages\specflow\2.4.0\tools

在这里插入图片描述
可通过 specflow.exe – help 命令了解 specflow.exe 命令。
在这里插入图片描述
在这里插入图片描述

生成 NUnit 项目测试报告

执行命令:

specflow.exe mstestexecutionreport --ProjectFile C:\Work\SpecFlowDemo\SpecflowNUnit\SpecflowNUnit.csproj --testResult C:\Work\SpecFlowDemo\NunitTest\testResult.trx --OutputFile C:\Work\SpecFlowDemo\NunitTest\MyResult.html

在这里插入图片描述

html 测试报告生成

在这里插入图片描述
在这里插入图片描述

生成 MSTest 项目测试报告

执行命令:

specflow.exe mstestexecutionreport --ProjectFile C:\Work\SpecFlowDemo\SpecflowMSTest\SpecflowMSTest.csproj --testResult C:\Work\SpecFlowDemo\MSTest\testResult.trx --OutputFile C:\Work\SpecFlowDemo\MSTest\MyResult.html

在这里插入图片描述

html 测试报告生成
在这里插入图片描述

在这里插入图片描述

生成 Xunit 项目测试报告

执行命令:

specflow.exe mstestexecutionreport --ProjectFile C:\Work\SpecFlowDemo\SpecFlowXunitDemo\SpecFlowXunitDemo.csproj --testResult C:\Work\SpecFlowDemo\XunitTest\testResult.trx --OutputFile C:\Work\SpecFlowDemo\XunitTest\MyResult.html

在这里插入图片描述

html 测试报告生成

在这里插入图片描述

在这里插入图片描述

生成 SpecRun 项目测试报告

执行命令:

specflow.exe mstestexecutionreport --ProjectFile C:\Work\SpecFlowDemo\SpecFlowSpecRun\SpecFlowSpecRun.csproj --testResult C:\Work\SpecFlowDemo\SpecRunTest\testResult.trx --OutputFile C:\Work\SpecFlowDemo\SpecRunTest\MyResult.html

在这里插入图片描述

html 测试报告生成
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/hchfFRnG.shtml

相关文章

行为驱动开发(BDD)你准备好了吗?

GitChat 作者&#xff1a;冰尘 原文&#xff1a;行为驱动开发&#xff08;BDD&#xff09;你准备好了吗&#xff1f; 关注微信公众号&#xff1a;「GitChat 技术杂谈」 一本正经的讲技术 【不要错过文末彩蛋】 这个Chat笔者将会和大家一起探讨下面的主题&#xff1a; 什么是…

BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit

BDD - SpecFlow BDD 测试实践 SpecFlow Xunit 引言创建一个 .NET Framework 项目添加 SpecFlow package添加支持 xUnit NuGet 包App.config 和 packages.config 的变化创建 Spec feature 文件创建 step definition 文件创建一个被测类文件实现 steps执行测试 引言 BDD - Spec…

漫画 | 被TDD/BDD/DDD......“逼疯”的程序员

作为一个程序员&#xff0c;你需要学习编程语言和编程框架。 虽然有些难度&#xff0c;但是你最终能掌握它们&#xff0c;顺利地写出应用程序。 但是&#xff0c;编程行业总是有一些东西&#xff0c;看起来很美&#xff0c;很简单&#xff0c; 但非常难于掌握。 你会理解TDD/DD…

基于BDD的接口自动化框架开箱即用

1、背景说明 项目思想&#xff1a;BDD 行为驱动开发的思想褒贬不一&#xff0c;这里不多说。遵循的宗旨能解决业务痛点的思想就是好思想。 接口测试工具在实际的业务测试场景中往往会遇到一些使用上的局限性&#xff0c;自定义扩展要求技术较高&#xff0c;如果二次开发工具…

BDD之单元测试(三):BDD的官方教程

BDD之单元测试&#xff08;二&#xff09;&#xff1a;ATDD&#xff0c;TDD&#xff0c;BDD的区别 BDD之单元测试&#xff08;三&#xff09;&#xff1a;BDD的官方教程 BDD之单元测试&#xff08;四&#xff09;&#xff1a;实际的项目教程 cucumber cucumber是BDD(Behav…

五分钟让你彻底了解TDD、ATDD、BDDRBE

在目前比较流行的敏捷开发模式&#xff08;如极限编程、Scrum方法等&#xff09;中&#xff0c;推崇“测试驱动开发&#xff08;Test Driven Development&#xff0c;TDD&#xff09;”——测试在先、编码在后的开发实践。TDD有别于以往的“先编码、后测试”的开发过程&#xf…

BDD(二元决策图)

转载自&#xff1a;二元决策图(Binary Decision Diagrams - BDD) &#xff08;一&#xff09; 在形式化验证、数字系统的设计和验证中&#xff0c;许多任务都涉及大型命题逻辑公式的运算。二元决策图&#xff08;BDD&#xff09;已经成为许多应用的首选表示方法。1986年&#x…

TDD和BDD的区别 (TDD vs BDD)

前言 如果你关注软件开发最佳实践方面的话题&#xff0c;你肯定听说过测试驱动开发(TDD - Test Driven Development) 和行为驱动开发(BDD - Behavior Driven Development)。这篇文章会为你阐述这两种模式的含义并举例&#xff0c;同时对二者进行比较。 测试驱动开发 (TDD) 当…

行为驱动开发(BDD)全面介绍

行为驱动开发&#xff08;BDD&#xff09;全面介绍 作者&#xff1a;杜铁绳 在软件行业中&#xff0c;软件研发项目软件产品交付经常被推迟、研发费用经常超出预算、经常遗漏客户所需的软件功能、有将近20%的项目最终无法交付&#xff0c;或者取消。这些软件研发往往花费了大…

web自动化测试进阶篇02 ——— BDD与TDD的研究实践

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

全面理解BDD(行为驱动开发):转变思维方式,提升软件质量

在传统的软件开发流程中&#xff0c;开发人员和测试人员的工作通常是相互独立的。开发人员负责编写代码&#xff0c;测试人员负责找出代码中的问题。然而&#xff0c;这种方法可能导致沟通不足&#xff0c;而且会浪费时间和资源。为了解决这些问题&#xff0c;出现了一种新的开…

BDD - 介绍 Behavior-Driven Development 行为驱动开发

BDD - Behavior-Driven Development 行为驱动开发 引言什么是 BDD相关软件开发流程TDDATDDBDD 和 TDD 的关系 BDD 原则BDD 流程BDD 优势 引言 自从接触到 BDD&#xff0c;深有感触&#xff0c;BDD 是广大 QA 的福音&#xff0c;测试领域的天空豁然开朗。BDD 模式更有助于团队合…

BDD自动化测试

BDD&#xff08;行为驱动开发&#xff09;自动化测试在软件测试领域一直在发展。随着agile思想在越来越多的项目中推广&#xff0c;以及非开发人员在项目的更多参与&#xff0c;BDD风格的自动化测试被越来越多项目组采纳并实施。 BDD&#xff08;Behavior Driven Development&…

端到端视频编码:DVC

本文来自CVPR 2019论文《DVC: An End-to-end Deep Video Compression Framework》 官方开源代码地址&#xff1a;https://github.com/GuoLusjtu/DVC DVC是一个端到端的视频编码模型&#xff0c;之前也有过一些基于DNN的视频编码方法&#xff0c;但是通常是使用DNN模型替换视频…

主流视频编码压缩技术基本概念(二) 算法分析

主流视频编码压缩技术基本概念&#xff08;二&#xff09; 算法分析 一、MPEG-1技术介绍1、 MPEG-1的层次及语法结构①、运动补偿序列(Sequence)②、图片组&#xff08;GOP&#xff09;③、 图片&#xff08;Picture&#xff09;④、 图片切片&#xff08;Slice&#xff09;⑤、…

视频编码解码基本知识

最近在做摄像头视频的数据处理&#xff0c;得到了网络相机的.h264格式的数据&#xff0c;需要做解码处理&#xff0c;由于对视频的编码解码原理不太了解&#xff0c;因此查找资料总结一下 为什么要进行视频编码&#xff1f; 视频编码又称为视频压缩&#xff0c;伴随着用户对高…

FFMpeg 实现视频编码、解码

FFMpeg 作为音视频领域的开源工具,它几乎可以实现所有针对音视频的处理,本文主要利用 FFMpeg 官方提供的 SDK 实现音视频最简单的几个实例:编码、解码、封装、解封装、转码、缩放以及添加水印。 接下来会由发现问题->分析问题->解决问题->实现方案,循序渐进的完成。…

感知视频编码

感知视频编码就是在视频编码的过程中&#xff0c;将HVS应用进去&#xff0c;挖掘主观视频感知冗余&#xff0c;进一步提高视频编码压缩效率。 1.Computational visual perception:三种视觉感知计算模型 &#xff08;1&#xff09;视觉敏感模型 &#xff08;2&#xff09;视觉注…

Android视频编码的坑

视频开发是一个核心方向&#xff0c;那Camera开发一直是Android的一个核心&#xff0c;笔者做过Camera HAL&#xff0c;也做过Camera App, 同时也开发过Camera 滤镜&#xff0c;这个过程中也遇到和解决过很多棘手的问题&#xff0c;也一直想总结一篇&#xff0c;看到这篇后感觉…

视频编码未来简史

首先我们回顾一下视频编码的历史&#xff0c;视频编码起源于广播电视&#xff0c;在很长一段时间里视频编解码的变革主要推动力是来自于广播电视。当然&#xff0c;今天我们看互联网的视频编码是速度越来越快&#xff0c;昨天在ICET2017年世界大会上&#xff0c;ICET的主席还说…