如何对通用类进行单元测试

时间:2010-05-06 20:49:15

标签: c# visual-studio-2008 unit-testing compact-framework

我正在尝试为现有的紧凑框架类库设置一些单元测试。但是,我遇到了第一个障碍,看起来测试框架无法加载所涉及的类型(即使它们都在被测试的类库中)

  

测试方法MyLibrary.Tests.MyGenericClassTest.MyMethodTest抛出异常:System.MissingMethodException:无法从程序集“MyLibrary,Version = 1.0.3778.36113,Culture = neutral,PublicKeyToken = null”中加载“MyLibrary.MyType”类型。 / p>

我的代码很松散:

public class MyGenericClass<T> : List<T> where T : MyType, new()
{
    public bool MyMethod(T foo)
    {
        throw new NotImplementedException();
    }
}

使用测试方法:

    public void MyMethodTestHelper<T>()
        where T : MyType, new()
    {
        MyGenericClass<T> target = new MyGenericClass<T>();
        foo = new T(); 
        expected = true;
        actual = target.MyMethod(foo);
        Assert.AreEqual(expected, actual);
    }

    [TestMethod()]
    public void MyMethodTest()
    {
        MyMethodTestHelper<MyType>();
    }

我有点难过,因为我甚至无法让它在调试器中破解以获得内部异常,所以我还要检查什么?

修改 这似乎是Compact Framework特有的东西 - 重新编译类库和完整框架的单元测试,给出了预期的输出(即调试器在我要抛出NotImplementedException时停止)。 / p>

2 个答案:

答案 0 :(得分:1)

尝试以下方法 - 创建一个控制台应用程序,并尝试在单元测试中执行任何操作。如果这也不起作用那么还有一些问题。如果可行则测试存在问题。

答案 1 :(得分:0)

显然,在对紧凑框架应用程序进行单元测试时,the .Net framework is not automatically deployed

因此,您必须在设备模拟器上调试(将自动部署框架)您打算用于单元测试的应用程序。您可以通过双击“SmartDeviceTestRun1.testrunConfig”解决方案项来解决设备模拟器图像用于单元测试的问题 - 要使用的图像位于“主机”选项卡上