繁体   English   中英

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

[英]How to unit test generic classes

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

测试方法MyLibrary.Tests.MyGenericClassTest.MyMethodTest引发异常:System.MissingMethodException:无法从程序集“ MyLibrary,版本= 1.0.3778.36113,文化=中性,PublicKeyToken =空”中加载类型“ MyLibrary.MyType”。

我的代码很松散:

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时停止)。

尝试以下操作-创建一个控制台应用程序,然后尝试执行单元测试中的所有操作。 如果那也不起作用,那么还有其他问题。 如果可行,则测试存在问题。

显然,在对紧凑型框架应用程序进行单元测试时, 不会自动部署.Net框架

因此,相反,您必须在打算用于单元测试的设备仿真器上调试(将自动部署框架)。 您可以通过双击“ SmartDeviceTestRun1.testrunConfig”解决方案项来更改用于设备测试的设备仿真器映像-要使用的映像位于“主机”选项卡上

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM