gpt4 book ai didi

c# - 如何在 Unity 中设置单元测试并修复缺少的程序集引用错误?

转载 作者:IT王子 更新时间:2023-10-29 04:24:12 25 4
gpt4 key购买 nike

我创建了以下结构:

├── Assets
├── Scenes
├── Scripts
│ └── MyExample.cs
├── Tests
│ ├── MyExampleTest.cs
│ └── Tests.asmdef

现在,当我在 Unity 的 Test Runner 窗口中单击 Run All 时,出现以下错误:

The type or namespace name `MyExample' could not be found. Are you missing an assembly reference?

在 Visual Studio 中我有两个项目:

  • Assembly-CSharp(含src)

  • 测试(包含测试)

我在第二个项目中添加了 Assembly-CSharp 作为引用。 Visual Studio 能够构建没有错误的解决方案。

有谁知道如何为 Unity 项目正确设置单元测试回归?

这是 Tests.asmdef

{
"name": "Tests",
"optionalUnityReferences": [
"TestAssemblies"
]
}

MyExampleTest.cs

using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
using abc;

public class MyExampleTest{

[Test]
public void NewTestScriptSimplePasses() {
// Use the Assert class to test conditions.
}

[UnityTest]
public IEnumerator NewTestScriptWithEnumeratorPasses() {
abc.Example m;
Assert.That(false);
yield return null;
}
}

MyExample.cs

namespace abc
{
public class Example
{


}
}

最佳答案

尝试使用内置的测试运行器 UI 来设置您的测试程序集文件夹和第一个测试脚本。

使用 Window -> Test Runner -> EditMode -> "Create Test Assembly Folder",导航到新的 Test Assembly 文件夹后,使用 Create Test Script in current folder 按钮。

特别是,与默认设置(在 Unity 2018.1 中)相比,您的 Tests.asmdef 缺少“编辑器”包含。

{
"name": "Tests",
"optionalUnityReferences": [
"TestAssemblies"
],
"includePlatforms": [
"Editor"
]
}

您不必为了设置测试而在 Visual Studio 项目中手动执行任何操作。

请注意,当我的程序集文件设置为“任何平台”时,如下所示(如您的问题):

{
"name": "Tests",
"optionalUnityReferences": [
"TestAssemblies"
]
}

我的测试没有出现在 Test Runner 窗口中。

当我的程序集文件明确设置为仅包含“编辑器”平台时(按照我之前的示例),我的测试会正确显示在测试运行器窗口中。

(这种行为对我来说似乎有点违反直觉。)


您还需要为脚本设置程序集定义。在您的 Scripts 文件夹下,创建一个程序集定义文件 MyScriptAssembly.asmdef(使用 Unity 菜单 Assets -> Create -> Assembly Definition 或手动):

{
"name": "MyScriptAssembly"
}

然后,确保您的 Tests.asmdef 引用您的脚本程序集:

{
"name": "Tests",
"references": [
"MyScriptAssembly"
],
"optionalUnityReferences": [
"TestAssemblies"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false
}

您也可以在 Unity Editor 检查器窗口中进行设置。选择 .asmdef 文件时,请参阅检查器中的“引用”:

assembly definition inspector window

(有关更多详细信息,请参阅 Unity's documentation on assembly definition files )

关于c# - 如何在 Unity 中设置单元测试并修复缺少的程序集引用错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com