仅在单元测试中可用的方法

Methods to be only available in Unit test

我正在寻找一种使方法仅在单元测试脚本中可用的方法。

public class MyClass
{
    public Data MyData { get; }
    internal MyClass()
    {
        // Complex code setting MyData
    }
#if UNITY_MACROS
    public MyClass(MyData data)
    {
         MyData = data;
    }
#endif
}

需要 public 构造函数仅在单元测试脚本和程序集中可用。

我试图查看测试程序集中的定义约束,但我可能没有正确使用,因为我没有发现任何差异。

您需要的是使用 InternalsVisibleTo 属性 (MS docs)。您可以在 class 源文件中添加以下行,也可以在单独的 AssemblyInfo.cs 中添加以下行,您可以在与 asmdef 文件相同的文件夹中创建它:

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("MyUnitTestAssembly")]

在这种情况下,您可以将 MyClass(MyData 数据) 保留在内部。