Pex:如何获取所有路径条件(PC)?
Pex: How to obtain all Path Conditions (PC)?
可以强制Pex/Intellitest寻找任何可能的路径条件吗?我需要 pex 向我展示那些 PC。在pexfonfun/visualstudio 2015年,我只能看到几台PC。例如,不可行的 PC 不会显示。
在下一个示例中,我得到 3 台电脑:
1) i != 12 && i != 15;
2) i == 15;
3) i == 12;
public static int foo(int i){
int a = 1;
if(i == 12)
a = 1;
if(i == 15)
a = 2;
return a;
}
为什么我没有得到“i != 12 && i == 15”?
谢谢! :)
>> 为什么我没有得到 "i != 12 && i == 15"?
IntelliTest 尝试生成具有高覆盖率的紧凑测试套件。
对于您的示例,请注意这 3 个 PC 足以覆盖代码中的所有块。因此,IntelliTest 决定现在可以停止。
以下是 IntelliTest 参考手册中的一些相关部分,进一步解释了这一点:
- 要查看 IntelliTest 如何生成数据,请参阅此处:https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-manual/input-generation
- 要查看 IntelliTest 何时决定发出测试用例,请参阅此处:https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-manual/test-generation
请让我知道我们如何改进本手册。
好的,话虽如此,您也可以让 IntelliTest 生成所有 PC(尽管它不会执行任何新的代码路径)。
以下是如何做到这一点:
- 在你的方法上做一个"Run IntelliTest"。
- Select 探索结果中的所有测试 window,然后点击保存按钮。请注意,将创建一个新的测试项目。
- 在此测试项目中找到 PUT – 它将是具有
PexMethod
属性的方法。
- 条件 IntelliTest 通过更新
PexMethod
属性来生成更多 PC 并发出测试,如下所示:
[PexMethod(TestEmissionFilter = Microsoft.Pex.Framework.Settings.PexTestEmissionFilter.All)]
- 现在在 PUT 或乘积方法上再次执行 "Run IntelliTest",您应该会看到其他 PC("duplicate path" 作为摘要消息)。根据您的喜好尝试 EmissionFilter 设置。
可以强制Pex/Intellitest寻找任何可能的路径条件吗?我需要 pex 向我展示那些 PC。在pexfonfun/visualstudio 2015年,我只能看到几台PC。例如,不可行的 PC 不会显示。
在下一个示例中,我得到 3 台电脑:
1) i != 12 && i != 15;
2) i == 15;
3) i == 12;
public static int foo(int i){
int a = 1;
if(i == 12)
a = 1;
if(i == 15)
a = 2;
return a;
}
为什么我没有得到“i != 12 && i == 15”?
谢谢! :)
>> 为什么我没有得到 "i != 12 && i == 15"?
IntelliTest 尝试生成具有高覆盖率的紧凑测试套件。 对于您的示例,请注意这 3 个 PC 足以覆盖代码中的所有块。因此,IntelliTest 决定现在可以停止。 以下是 IntelliTest 参考手册中的一些相关部分,进一步解释了这一点:
- 要查看 IntelliTest 如何生成数据,请参阅此处:https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-manual/input-generation
- 要查看 IntelliTest 何时决定发出测试用例,请参阅此处:https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-manual/test-generation
请让我知道我们如何改进本手册。
好的,话虽如此,您也可以让 IntelliTest 生成所有 PC(尽管它不会执行任何新的代码路径)。 以下是如何做到这一点:
- 在你的方法上做一个"Run IntelliTest"。
- Select 探索结果中的所有测试 window,然后点击保存按钮。请注意,将创建一个新的测试项目。
- 在此测试项目中找到 PUT – 它将是具有
PexMethod
属性的方法。 - 条件 IntelliTest 通过更新
PexMethod
属性来生成更多 PC 并发出测试,如下所示:[PexMethod(TestEmissionFilter = Microsoft.Pex.Framework.Settings.PexTestEmissionFilter.All)]
- 现在在 PUT 或乘积方法上再次执行 "Run IntelliTest",您应该会看到其他 PC("duplicate path" 作为摘要消息)。根据您的喜好尝试 EmissionFilter 设置。