【问题标题】:Pex ignores [PexAssumeNotNull] and PexAssume.AreElementsNotNull()Pex 忽略 [PexAssumeNotNull] 和 PexAssume.AreElementsNotNull()
【发布时间】:2015-04-09 12:03:42
【问题描述】:

我有以下 PexMethod:

[PexMethod]
public bool fwAlertConfig_objectConfigExists(
    [PexAssumeUnderTest]WinCC target,
    [PexAssumeNotNull] List<mixed> alertConfigObject,
    [PexAssumeNotNull] ref int configType,
    [PexAssumeNotNull] ref List<string> exceptionInfo
)
{
    PexAssume.TrueForAll(alertConfigObject, x => x.value != null);
    PexAssume.AreElementsNotNull(alertConfigObject);
    bool result
       = target.fwAlertConfig_objectConfigExists(alertConfigObject, ref configType, ref exceptionInfo);
    return result;

}

我故意把[PexAssumeNotNull]PexAssume放在那里。然而, 当我“运行 Pex 探索”时,这些东西似乎被忽略了,这些是创建的输入:

请注意以下几点:

  • in exceptionInfo 在每一行中都是 null,尽管它有 [PexAssumeNotNull]
  • 第 2 行:alertConfigObject 是 {null},虽然我定义了 PexAssume.AreElementsNotNull(alertConfigObject)
  • 第 4 行:new mixed{value=null},虽然我定义了 PexAssume.TrueForAll(alertConfigObject, x =&gt; x.value != null)

但是:[PexAssumeNotNull] 非常适用于 alertConfigObject,因为我不再将 null 视为输入。 那么为什么其他假设不起作用呢?

【问题讨论】:

    标签: visual-studio-2010 pex


    【解决方案1】:

    我无法测试,因为你没有提供被测代码,但你可以尝试将[PexAssumeNotNull]属性替换为静态方法PexAssume.IsNotNull,如下所示:

       [PexMethod]
       public bool fwAlertConfig_objectConfigExists(
           WinCC target,
           List<mixed> alertConfigObject,
           ref int configType,
           ref List<string> exceptionInfo)
       {
           PexAssume.IsNotNull(target);
           PexAssume.IsNotNull(alertConfigObject);
           PexAssume.IsNotNull(configType);
           PexAssume.IsNotNull(exceptionInfo);
    
           PexAssume.TrueForAll(alertConfigObject, x => x.value != null);
           PexAssume.AreElementsNotNull(alertConfigObject);
           bool result
              = target.fwAlertConfig_objectConfigExists(alertConfigObject, ref configType, ref exceptionInfo);
           return result;
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多