测试方法出错

时间:2015-10-03 12:25:28

标签: c# unit-testing moq

我的工作方法,需要测试:

using TCatSysManagerLib; // for TcSysManager
public static int ProcessPositionBias(TcSysManager tcsm)
{
    // method body here
    return 0;
}

现在在测试单元中我试图模拟TcSysManager,因为它适用于硬件,这在测试期间不可用,我甚至无法使用它:

namespace TestClient
{
    [TestClass]
    public class UnitTestClient
    {
        [TestMethod]
        public void TestVersion()
        {
            Mock<TcSysManager> tcsm = new Mock<TcSysManager>();

            int r = ClientProgram.ProcessPositionBias(tcsm.Object); // errors here

        }
    }

    public TcSysManager
    {
        // I promise to implement some methods which I use in my app
    }
}

基本上编译器抱怨有三件事:

  

错误1类型&#39; TCatSysManagerLib.TcSysManager&#39;定义在一个   未引用的程序集。您必须添加对程序集的引用   &#39; Interop.TCatSysManagerLib,Version = 1.1.0.0,Culture = neutral,   公钥=空&#39 ;.

     

错误2最佳重载方法匹配   &#39; Client.ClientProgram.ProcessPositionBias(TCatSysManagerLib.TcSysManager)&#39;   有一些无效的   参数

     

错误3参数1:无法转换为&#39; TestClient.TcSysManager&#39;至   &#39; TCatSysManagerLib.TcSysManager&#39;

1 个答案:

答案 0 :(得分:0)

错误告诉你出了什么问题。你不能只给一个类型相同的名字,你需要与你所调用的方法完全相同的类型。

另一种方法是在TcSysManager中引入一个接口,在单独的程序集中声明,并生成该接口的method参数的类型。