c# - 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 秒。
任何建议将被认真考虑。
解决方案
Unity 对 NUnit 框架进行了相当多的调整。如果有一件事情是Unity应用程序从来没有处理过的,那就是异步代码。
NUnit 框架使用多线程测试执行并行运行测试,我想这是Unity 在创建它们的测试运行器适配时删除的第一件事。
如果您的代码可以从 Unity 中移出,然后通过 DLL 导入,那么我建议您这样做。这样你的单元测试就可以使用原始的 NUnit 框架!这是我在所有项目中都采用的模式。
长话短说,我认为你不能。
推荐阅读
- c++ - 在哪里可以找到 Clang-tidy“可读性标识符命名”检查器的可用选项列表?
- laravel - 如何在 vuejs 组件中显示嵌套数组数据
- css - CSS - 具有右边距的 Flex 元素
- sql - 将一个变量中的不同值组合在一起
- html - Childs div大小与最大的div css相同
- javascript - 如何从 C# 创建的 JavaScript 中的数据表中检查字段的值?
- ios - Swift 4.2 - Cocoapods:在 resource_bundles 中添加和访问 scnassets
- java - 当我通过 java 代码运行 jmeter 时出现错误 converters.ConversionException
- java - Java 中的 System.in.read() 阻塞多长时间
- mysql - 如何使这个 MySQL 查询(带有子查询)更快?