如何在NUnit单个项目中分别运行回归与Sanity测试?
在NUnit中实现类似TestNG的分组测试(Regression/Sanity)
嗨,我来帮你搞定这个问题!从TestNG转NUnit的话,其实NUnit的Category属性就对应TestNG的分组功能,完全可以实现你要的单独运行Regression或Sanity测试的需求,下面给你一步步讲怎么操作:
1. 用Category属性标记测试方法/类
你可以给单个测试方法或者整个测试类添加[Category]特性,来标记它们属于哪个测试分组(Regression/Sanity)。比如:
using NUnit.Framework; // 整个类下的所有测试都默认属于Regression分组 [TestFixture] [Category("Regression")] public class OrderManagementTests { [Test] public void Submit_ValidOrder_ReturnsSuccess() { // 你的Selenium测试代码 } // 这个测试同时属于Regression和Sanity分组 [Test] [Category("Sanity")] public void Cancel_ExistingOrder_ReturnsSuccess() { // 你的Selenium测试代码 } } [TestFixture] public class UserAuthenticationTests { // 这个测试只属于Sanity分组 [Test] [Category("Sanity")] public void Login_ValidCredentials_RedirectsToDashboard() { // 你的Selenium测试代码 } }
2. 在Visual Studio 2017中运行指定分组的测试
有两种常用方式:
方式一:用Test Explorer筛选后运行
打开Visual Studio的测试资源管理器(Test Explorer),在顶部的搜索框里输入筛选条件:
- 要运行所有Regression测试:输入
Category:Regression - 要运行所有Sanity测试:输入
Category:Sanity
筛选出来后,右键点击结果,选择运行所选测试就可以了。
方式二:用.runsettings配置文件批量运行
如果你需要固定保存某个分组的运行配置,可以创建一个.runsettings文件:
- 右键你的测试项目 -> 添加 -> 新建项 -> 搜索并选择“测试设置文件”(或者直接新建一个XML文件,命名为
RegressionTests.runsettings) - 替换内容为:
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <NUnit> <!-- 指定要运行的分组,这里是Regression --> <TestFilter>Category=Regression</TestFilter> </NUnit> </RunSettings>
- 同样可以创建
SanityTests.runsettings,把TestFilter里的内容改成Category=Sanity - 在VS顶部菜单选择测试 -> 测试设置 -> 选择测试设置文件,选中你要的配置文件,之后运行所有测试时就只会执行对应分组的用例了。
3. 命令行运行指定分组(可选)
如果你需要在CI/CD或者脚本里运行,也可以用命令行:
- 用
dotnet test命令(适用于.NET Core/.NET 5+项目,VS2017如果是.NET Framework的话用vstest.console.exe):
# 运行Regression分组 dotnet test YourTestProject.csproj --filter "Category=Regression" # 运行Sanity分组 dotnet test YourTestProject.csproj --filter "Category=Sanity"
- 对于.NET Framework项目,用
vstest.console.exe:
vstest.console.exe YourTestProject/bin/Debug/YourTestAssembly.dll /TestCaseFilter:"Category=Sanity"
总结
NUnit的Category特性完全可以替代TestNG的xml分组功能,不管是在IDE里临时筛选,还是用配置文件固定分组,甚至命令行批量运行,都能轻松实现单独Regression或Sanity测试的需求,用起来比TestNG的xml还要灵活一些~
内容的提问来源于stack exchange,提问作者user3174886
相关产品推荐
相关产品推荐

