首页 > 解决方案 > Unity/C#、NUnit Parallelizable 属性

问题描述

我将 Unity 2019.4.4f1 与 NUnit 3.5 一起使用。

我在方法之间建立了一个非常简单的并行测试,看看它是否真的有效,但它们是同步运行的。几天来我一直在研究 NUnit 并行测试,但我觉得我错过了一些非常明显的东西。

using NUnit.Framework;
using System.Threading;

namespace NUnitTest
{
    [TestFixture]
    public class ParallelTest
    {
        [Test]
        [Parallelizable]
        public void Test01()
        {
            Debug.Log("Test 1 started");
            Thread.Sleep(2000);
            Debug.Log("Test 1 ended");
            Assert.IsTrue(true);
        }

        [Test]
        [Parallelizable]
        public void Test02()
        {
            Debug.Log("Test 2 started");
            Thread.Sleep(2000);
            Debug.Log("Test 2 ended");
            Assert.IsTrue(true);
        }
    }
}

在 TestRunner 中,我运行 ParallelTest 来同时运行它们。我想 ParallelTest 的总运行时间应该接近 2 秒,但实际上是 4 秒。

任何建议将被认真考虑。

标签: c#unity3dparallel-processingnunit

解决方案


Unity 对 NUnit 框架进行了相当多的调整。如果有一件事情是Unity应用程序从来没有处理过的,那就是异步代码

NUnit 框架使用多线程测试执行并行运行测试,我想这是Unity 在创建它们的测试运行器适配时删除的第一件事。

如果您的代码可以从 Unity 中移出,然后通过 DLL 导入,那么我建议您这样做。这样你的单元测试就可以使用原始的 NUnit 框架!这是我在所有项目中都采用的模式。

长话短说,我认为你不能。


推荐阅读