在Unity Test Runner中对私有方法进行单元测试

我想对我在C#中的私有方法进行单元测试。由于这些方法是私有的,因此无法从测试环境中访问它们。

dong2apple 回答:在Unity Test Runner中对私有方法进行单元测试

我想这样做:

  1. 转到“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Community \ Common7 \ IDE \ PublicAssemblies \”,然后将文件“ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll”复制到您的文件夹中Unity项目。
  2. 引用您的.asmdef文件中的文件,该文件位于“测试”文件夹中:inspector view
  3. 在您的c#测试脚本中,您现在可以访问此添加的using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. 实例化类的实例,该实例包含用于测试和创建私有对象的方法。如果要测试的方法是静态的,请创建一个私有类型:

    public class MyClass
    {
        private static int AddOne(int i)
        {
            return i += 1;
        }
        private int SubOne(int i)
        {
            return i -= 1;
        }
    }
    
    MyClass myClass = new MyClass();
    PrivateType privateTypeMyClass = new PrivateType(myClass.GetType());
    int res1 = (int)privateTypeMyClass .InvokeStatic("AddOne",2);
    PrivateObject privateObjectMyClass = new PrivateObject(myClass);
    int res2 = (int)privateObjectMyClass.Invoke("AddOne",2);
    
  5. 如果要传递多个参数,则可以使用obj[]来传递这些参数。

,

不建议为private方法编写单元测试。您应该只为public方法编写测试,因为调用者只能通过公共方法和属性与您的类进行交互。在流中,private方法将调用public方法。因此,编写测试以使它们调用public方法并通过不同的流程覆盖private方法。这样,您还可以知道代码中是否有一些未使用的private方法可以删除。

本文链接:https://www.f2er.com/3104535.html

大家都在问