【问题标题】:Methods to be only available in Unit test仅在单元测试中可用的方法
【发布时间】:2021-10-27 08:36:37
【问题描述】:

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

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

需要的是公共构造函数只能在单元测试脚本和程序集中可用。

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

【问题讨论】:

    标签: unit-testing unity3d macros


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多