如何在Unity的NUnit测试中实现自定义测试分组(非TestCase/子类方式)
实现自定义测试分组(NUnit)
你可以通过自定义特性封装NUnit原生的Category功能,来实现你想要的[TestGroup]分组方式,同时保留同一个TestFixture下的SetUp共享逻辑:
1. 创建自定义TestGroup特性
继承NUnit的CategoryAttribute,这样NUnit会自动识别为测试分类:
using NUnit.Framework; public class TestGroupAttribute : CategoryAttribute { public TestGroupAttribute(string groupName) : base(groupName) { } }
2. 在测试中使用TestGroup分组
直接在测试方法上标记[TestGroup],指定分组名称,所有标记同一组名的测试会被归为一组:
[TestFixture] public class RoomTests { [SetUp] public void SetUp() { // 你的初始化逻辑,所有测试共享此方法 } [Test] [TestGroup("OnJoinRoom")] public void ShouldDoSomething() { // 测试逻辑 } [Test] [TestGroup("OnJoinRoom")] public void ShouldDoSomethingElse() { // 测试逻辑 } [Test] [TestGroup("OnLeaveRoom")] public void ShouldCleanupResources() { // 其他分组的测试 } }
效果说明
在NUnit测试运行器(比如Visual Studio测试资源管理器、JetBrains Rider测试窗口)中,你可以按Category(也就是自定义的TestGroup名称)筛选或查看分组后的测试,完全符合你想要的分组效果,同时所有测试都在同一个TestFixture下,保留了对SetUp方法的依赖。
如果需要更复杂的分组逻辑(比如动态分组、分组级别的初始化/清理),可以扩展NUnit的ITestAction接口,但上述方案是最轻量化且符合你需求的实现方式。
内容的提问来源于stack exchange,提问作者AX2
相关产品推荐
相关产品推荐

