Pex:如何获得所有路径条件(PC)?

时间:2016-12-26 20:49:01

标签: pex intellitest

是否可以强制Pex / Intellitest寻找任何可能的路径条件?我需要pex给我看那些PC。在pexfonfun / visualstudio 2015中,我只能看到几台PC。例如,不显示不可行的PC。

在下一个例子中,我得到3台PC:

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;
}

为什么我没有“我!= 12 && i == 15”?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

<强>&GT;&GT;为什么我得不到&#34;我!= 12&amp;&amp;我== 15&#34;?

IntelliTest尝试生成具有高覆盖率的紧凑测试套件。 举个例子,请注意这3台PC足以覆盖代码中的所有块。因此,IntelliTest决定它现在可以停止。 以下是IntelliTest参考手册中的一些相关章节,可以进一步解释:

  1. 要了解IntelliTest如何生成数据,请参阅此处:https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-manual/input-generation
  2. 要查看IntelliTest何时决定发布测试用例,请参阅此处:https://www.visualstudio.com/en-us/docs/test/developer-testing/intellitest-manual/test-generation
  3. 请告诉我们如何改进本手册。

    好了,现在已经说过了,你也可以让IntelliTest生成所有的PC(尽管它不会运用任何新的代码路径)。 以下是如何做到这一点:

    1. 执行&#34;运行IntelliTest&#34;你的方法。
    2. 从“探索结果”窗口中选择所有测试,然后单击“保存”按钮。请注意,将创建一个新的测试项目。
    3. 在此测试项目中找到PUT - 它将是具有PexMethod属性的方法。
    4. 条件IntelliTest通过更新PexMethod属性生成更多PC并发出测试,如下所示: [PexMethod(TestEmissionFilter = Microsoft.Pex.Framework.Settings.PexTestEmissionFilter.All)]
    5. 现在做一个&#34;运行IntelliTest&#34;再次在PUT或产品方法上,您应该看到其他PC(使用&#34;重复路径&#34;作为摘要消息)。根据您的喜好尝试EmissionFilter设置。