2

我的类具有属性 IsMacro、Value、Visible、DataType 和一种方法 GetResolvedValue。我不知道要测试什么。我做了一些数学运算,发现该方法有超过 800 个可能的输出。

enum DataTypeEnum:
  Bool,
  String,
  DateTime,
  Integer,
  LongInteger,
  Decimal,
  ...

class Macro
  property bool IsMacro;
  property string Value;
  property bool Visible;
  property DataTypeEnum DataType;

  function GetResolvedValue(Resolver) {
      string value = Value;

      if (IsMacro && Visilbe) {
        value = Resolver.resolve(value);
      }

      switch (DataType){
          case String:
              // returns value if is string e.g.: "text"
              // othervise returns empty string
          case Bool:
              // returns value if is bool string e.g.: "true"
              // othervise returns empty string
          case DateTime:
              // returns value if is DateTime string e.g.: "2/2/2010"
              // othervise returns empty string
          ...
      }        
  }

因此,它必须始终返回值对关联数据类型或空字符串有效的字符串。

使用此代码有很多组合,我不知道如何测试它。我应该测试所有可能的解决方案吗?

4

1 回答 1

4

听你的测试!
即使是现在,甚至在编写之前,您的测试就告诉您这种方法严重违反了 SRP,需要重构。
您可能应该从这个方法中提取整个类的层次结构。

于 2013-07-27T20:16:54.697 回答