c# - Unity/C#、NUnit 可并行化属性

标签 c# unity-game-engine parallel-processing nunit

我正在使用 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 秒。

如有任何建议,我们将不胜感激。

最佳答案

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

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

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

长话短说,我认为你做不到。

关于c# - Unity/C#、NUnit 可并行化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63530386/

相关文章:

c# - 如何处理来自httpclient的数据

c# - 发出属性以设置字典值

java - Unity3D : APK file missing

c# - Unity 将网格缝合在一起

java - Java ExecutorService 上的 Fibonacci 顺序运行比并行运行更快

f# - 在 F# 中并行化两个矩阵的元素乘法

c# - 错误 0x80005000 和 DirectoryServices

c# - 不能在表达式树的 lambda 中使用动态委托(delegate)参数

c# - Unity3D 类型加载异常

haskell - 使用 repa 时将 Identity monad 与 mmultP 一起使用有什么问题?