【问题标题】:Should I be unit testing this class?我应该对这个类进行单元测试吗?
【发布时间】:2008-12-09 04:40:35
【问题描述】:

我知道这可能是一个非常基本的问题,但我现在脑子里有点空白。我应该对这个类进行单元测试吗?

public class MapinfoWindowHandle : IWin32Window
    {
        IntPtr handle;

        public MapinfoWindowHandle(IntPtr mapinfoHandle)
        {
            this.handle = mapinfoHandle;     
        }

        #region IWin32Window Members

        IntPtr IWin32Window.Handle
        {
            get { return this.handle; }
        }

        #endregion
    }

如果我应该是我应该测试什么?
我是这样使用的:

IntPtr handle = new IntPtr(100);
myform.show(new MapinfoWindowHandle(handle));

【问题讨论】:

    标签: c# unit-testing testing


    【解决方案1】:

    我能看到的唯一一件事是确保您取出通过构造函数放入的句柄。我知道很明显您以这种方式实现了它,但测试会向您保证它会保持这种方式。我会测试这个只是因为你是通过构造函数注入它的。如果只是 { get;放; } 我可能不会。

     [TestMethod]
     public void ConstructorTest()
     {
          IntPtr handle = new IntPtr(100);
          MapinfoWindowHandle winHandle = new MapinfoWindowHandle(handle);
          Assert.AreEqual( handle, ((IWin32Window)winHandle).Handle );
     }
    

    【讨论】:

      【解决方案2】:

      我当然会测试是否尝试使用 NULL (0) 或 INVALID_HANDLE_VALUE (-1) 来构造它,并且可能会在适当的情况下将其抛出其中一个/两个(目前尚不清楚是否可以使用 IntPtr 初始化该类。零,但几乎可以肯定 -1 无效。

      【讨论】:

        【解决方案3】:

        是的。如果一个类值得写,那就值得测试

        【讨论】:

        • 专制主义对任何人都没有好处。
        • 你确实意识到那句话的讽刺意味,不是吗?
        • 以后你应该添加 标签 :)
        【解决方案4】:

        我内心的实用主义者说不,因为班级“什么都不做”,所以没有“什么”要测试。 但可以肯定的是,您仍然可以对其进行测试,仅用于文档目的,并作为未来开发人员的合同。

        【讨论】:

        • 但是该类确实有一个可以测试的合同。构造函数参数必须是结果属性。微不足道但可测试。
        【解决方案5】:

        众所周知,GUI 代码很难进行单元测试。我从来没有发现它在我自己的应用程序中太有用了。只需将您的业务逻辑放在 GUI 之外,这样您就可以轻松地对其进行测试。我通常使用手动或自动集成/验收测试来测试 gui 代码。很难编写测试来验证某件事“看起来是否正确”。

        【讨论】:

          【解决方案6】:

          是的,写测试。如果稍后有人更改代码或添加一些新代码,您至少需要进行一项测试以确保该类按预期工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-14
            • 1970-01-01
            • 2014-03-25
            相关资源
            最近更新 更多