Pex 忽略默认参数分配
Pex ignores default parameter assignment
我正在使用 Pex 分析函数执行。
但是,我注意到没有查看默认参数。
这是我的意思的一个例子:
public int bla(int x = 2)
{
return x * 2;
}
当我 运行 Pex 时,它会生成 int result = bla(0);
的测试用例。 (x = 0
)
有没有办法告诉 Pex 它也应该尝试不带参数调用 bla(
(即 int result = bla()
)?
IntelliTest/Pex 的第一条规则是它试图增加代码覆盖率。
如果所有语句都被覆盖,Pex 将停止。
有很多方法可以添加一些仅在 x=2 时被覆盖的代码,例如在测试方法中。这可能是对我有用的最简单的方法:
[PexMethod]
public int bla([PexAssumeUnderTest]Class1 target, int x)
{
if(x == 2)
{
PexAssert.ReachEventually();
}
int result = target.bla(x);
return result;
// TODO: add assertions to method Class1Test.bla(Class1, Int32)
}
探索结果window应该显示:
x result
0 0
2 4
我不知道有什么方法可以让 Pex 自动为所有默认参数生成测试用例。
在现实世界的生产代码中,很可能会在代码中使用默认值,因此您可能不会 运行 经常遇到这个问题。
如果您拥有 Pex 涵盖的所有代码路径,是否使用默认值真的很重要吗?
在提供和不提供值的情况下测试调用 'bla' 的方法可能更重要。
我正在使用 Pex 分析函数执行。 但是,我注意到没有查看默认参数。
这是我的意思的一个例子:
public int bla(int x = 2)
{
return x * 2;
}
当我 运行 Pex 时,它会生成 int result = bla(0);
的测试用例。 (x = 0
)
有没有办法告诉 Pex 它也应该尝试不带参数调用 bla(
(即 int result = bla()
)?
IntelliTest/Pex 的第一条规则是它试图增加代码覆盖率。 如果所有语句都被覆盖,Pex 将停止。
有很多方法可以添加一些仅在 x=2 时被覆盖的代码,例如在测试方法中。这可能是对我有用的最简单的方法:
[PexMethod]
public int bla([PexAssumeUnderTest]Class1 target, int x)
{
if(x == 2)
{
PexAssert.ReachEventually();
}
int result = target.bla(x);
return result;
// TODO: add assertions to method Class1Test.bla(Class1, Int32)
}
探索结果window应该显示:
x result
0 0
2 4
我不知道有什么方法可以让 Pex 自动为所有默认参数生成测试用例。
在现实世界的生产代码中,很可能会在代码中使用默认值,因此您可能不会 运行 经常遇到这个问题。
如果您拥有 Pex 涵盖的所有代码路径,是否使用默认值真的很重要吗?
在提供和不提供值的情况下测试调用 'bla' 的方法可能更重要。