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