You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Unity中配置单元测试并修复程序集引用缺失错误?

解决Unity Test Runner找不到MyExample类的问题

我之前也踩过这个Unity测试程序集引用的坑,给你几个针对性的排查和解决步骤:

1. 优先通过Tests.asmdef配置程序集引用

Unity的程序集依赖是通过.asmdef文件管理的,你在Visual Studio里手动添加的引用经常会被Unity自动覆盖,所以得从根源上配置:

  • 在Project窗口里选中Tests.asmdef文件
  • 在Inspector面板的References列表中,点击+号,找到并添加Assembly-CSharp
  • 保存设置,Unity会自动重新生成项目文件

2. 检查命名空间是否匹配

如果MyExample.cs里定义了命名空间(比如namespace MyGame.Scripts;),那你的测试类MyExampleTest.cs必须引用这个命名空间,不然会找不到类型:

using MyGame.Scripts; // 必须加上这个,和MyExample的命名空间对应
using NUnit.Framework;

public class MyExampleTest
{
    // 测试代码...
}

3. 确认MyExample.cs属于Assembly-CSharp程序集

默认情况下,Assets下所有没有自己.asmdef文件的脚本都会归到Assembly-CSharp里,但如果你的Scripts文件夹有自己的.asmdef(比如Scripts.asmdef),那MyExample.cs就属于那个自定义程序集了,这时候你需要在Tests.asmdef的References里添加那个自定义程序集,而不是Assembly-CSharp

4. 清理Unity缓存并重新生成项目

有时候Unity的程序集缓存会出问题,试试这个万能修复法:

  • 关闭Visual Studio
  • 在项目根目录删除Library文件夹(放心,Unity会重新生成这个文件夹)
  • 重新打开Unity,等待它完成项目导入和程序集生成
  • 再打开Visual Studio,检查引用是否正常,然后重新运行测试

5. 检查测试类的范围

确保MyExampleTest.cs确实被Tests.asmdef包含:

  • 打开Tests.asmdef,在Inspector的Include Platforms里确认没有排除测试相关的平台(比如Editor)
  • 确认MyExampleTest.cs没有被放在Tests.asmdefExclude Folders列表里

内容的提问来源于stack exchange,提问作者HAL9000

火山引擎 最新活动