我有以下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]
{null}
,虽然我定义了PexAssume.AreElementsNotNull(alertConfigObject)
new mixed
有{value=null}
,虽然我定义了
PexAssume.TrueForAll(alertConfigObject, x => x.value != null)
但是:[PexAssumeNotNull]
适用于alertConfigObject,因为我不再将null视为输入。
那么为什么其他假设不起作用?
答案 0 :(得分: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;
}