BDD - Specflow BDD 执行测试,测试报告 NUnit 篇
引言
前面有介绍 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。今天来了解一下用 NUnit 命令执行测试以及测试报告的生成。
Nunit 执行测试
Nunit 提供了不同的 Runner,其中 Console Runner, nunit-console.exe 命令是用于批处理执行的。
安装 NUnit.Console
要用 nunit-console.exe 命令,就需要安装 NUnit.Console NuGet 包。我们还是基于 BDD - SpecFlow BDD 测试实践 SpecFlow + NUnit 这个项目装 NUnit.Console
packages.config 文件中有多出这些依赖包:
NUnit.Console 命令所在目录在 C:\Users\userName\ .nuget\packages\nunit.consolerunner\3.15.2\tools
执行 NUnit.Console 命令
NUNIT3-CONSOLE [inputfiles] [options]
可通过 nunit3-console.exe -h 了解更多细节。
执行下面命令:
nunit3-console.exe --labels=All --out=C:\Work\SpecFlowDemo\TestResult\TestResult.txt “–result=C:\Work\SpecFlowDemo\TestResult\TestResult.xml;format=nunit2” C:\Work\SpecFlowDemo\SpecflowNUnit\bin\Debug\SpecflowNUnit.dll
out 参数是保存 txt 测试输出,result 参数是保存具体的测试结果
执行结果:
Specflow 生成测试报告
上面 NUnit.Console 命令产生的两个输出文件,还不是我们想要的测试报告,Specflow 提供生成可接受的 html 格式的测试报告,但是只适用于 Specflow 2 版本,Specflow 3 已经移除了此功能。
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 命令。
执行命令生成测试报告:
specflow.exe nunitexecutionreport --ProjectFile C:\Work\SpecFlowDemo\SpecflowNUnit\SpecflowNUnit.csproj --xmlTestResult C:\Work\SpecFlowDemo\TestResult\TestResult.xml --testOutput C:\Work\SpecFlowDemo\TestResult\TestResult.txt --OutputFile C:\Work\SpecFlowDemo\TestResult\CustomSpecflowTestReport.html
其中 --xmlTestResult 参数是 nunit-console 生成的 xml 测试结果, --testOutput 参数是 nunit-console 生成的 txt 测试结果, --OutputFile 参数是 specflow 生成的 html 测试报告。
html 测试报告生成了
html 测试报告内容:
对于非 NUnit test
对于非 NUnit test (MSTest, SpecRun, Xunit), 运行 NUnit console 命令会产生错误“ Either assembly contains no tests or proper test driver has not been found.
” NUnit console 只运行于 NUnit test。
对于 MSTest BDD - SpecFlow BDD 测试实践 SpecFlow + MSTest
对 SpecRun BDD - SpecFlow BDD 测试实践 SpecFlow + SpecRun
对于 Xunit BDD - SpecFlow BDD 测试实践 SpecFlow + Xunit