代码之家  ›  专栏  ›  技术社区  ›  Sarah Vessels

在C中调整静态类中用于单元测试的常数#

  •  0
  • Sarah Vessels  · 技术社区  · 16 年前

    我有一个表示连接池的静态类,我想使用VisualStudio2008的内置单元测试框架对其进行单元测试。静态类中有一些常量,比如允许的最大连接数。我想为我的单元测试减少这个值,这样我就不必为了达到测试条件而打开很多连接(特别是当达到允许的最大连接数时的代码)。有没有办法在单元测试中编辑这个常量?在我看来,这是不可能的。

    我的一个解决方案是编写另一个方法来访问要测试的代码,一个将“允许的最大连接数”作为参数的方法。这看起来有点脏,因为它修改了我想要测试的代码,即使只是稍微修改;然而,还有更好的选择吗?以下是我的一些代码,供参考:

    internal static class ConnectionPool<T> where T : Connection, new()
    {
        private const int MAX_OBJECTS = 25;
        private static int _totalConnections;
    
        internal static T getConnection(bool testMode)
        {
            if (_totalConnections >= MAX_OBJECTS)
            {
                // Here's the code I want to test
            }
        }
    }
    
    4 回复  |  直到 16 年前
        1
  •  3
  •   Lloyd    16 年前

    不,您不能修改常量,但可以将其替换为静态只读字段,并使用反射修改该字段。

        2
  •  2
  •   plinth    16 年前

        3
  •  2
  •   Samuel Carrijo    16 年前

    您可以从配置文件中获取它,因此您可以有不同的测试值。

        4
  •  0
  •   Sarah Vessels    16 年前

    我突然想到,被测试代码的条件有两部分:常量 MAX_OBJECTS 是其中之一,没错,但也有 _totalConnections . 使用visualstudio为我生成的访问器类来访问其中的私有方法和变量 ConnectionPool _总体连接 为了创造条件 if (_totalConnections >= MAX_OBJECTS) 符合事实的换句话说,我将在单元测试中对静态类撒谎,这样我就不必创建 最大值对象 连接以满足条件。