这里我将通过一个例子来解释这个问题。原始问题更抽象地提出了问题。不过没必要读。
更新:以问题为例
假设我们已经实现了这个有问题的函数来查找 int[] 的最小值:
public int MyMin(int[] data)
{
int min = 1000;
for (int i = 1; i < data.Length; i++)
{
if (data[i] < min)
{
min = data[i];
}
}
return min;
}
在这个函数上运行 Intellitet 会给我们:
请注意测试#4 和#6,由于实现错误,该函数无法正确计算最小值。但是,这些测试正在通过,这是不希望的。
Intellitet 无法神奇地确定我们的预期行为MyMin
并制作测试以在这些输入上失败。但是,如果我们可以手动指定这些测试所需的结果,那就太好了。
@michał-komorowski 的解决方案是可行的,但是对于每个测试用例,我必须以PexAssume
s 重复其输入。是否有更优雅/干净的方式来指定测试输入的所需输出?
原始问题
Intelitest 生成一个可修改的参数化测试,并且可以在其中添加通用/全局断言。它还生成使代码覆盖率最大化的最小输入数。Intellitest 将输入存储为单独的单元测试,每个测试都使用精心设计的输入调用参数化测试。
我正在寻找一种方法来为每个输入添加断言。
由于每个输入都作为单元测试函数存储在.g.cs文件中,因此可以在其中添加断言。问题是这些函数不应该由用户自定义,因为它们将在后续运行中被 Intellitet 覆盖。
为每个单元测试添加断言的推荐方法是什么?