0

是否可以强制 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;
}

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

谢谢!:)

4

1 回答 1

1

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

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

请让我知道我们如何改进本手册。

好的,话虽如此,您也可以让 IntelliTest 生成所有 PC(尽管它不会使用任何新的代码路径)。以下是如何做到这一点:

  1. 对您的方法执行“运行 IntelliTest”。
  2. 从 Exploration Results 窗口中选择所有测试,然后点击保存按钮。请注意,将创建一个新的测试项目。
  3. 在这个测试项目中找到 PUT——它将是具有PexMethod属性的方法。
  4. 条件 IntelliTest 通过更新属性来生成更多 PC 并发出测试,PexMethod如下所示: [PexMethod(TestEmissionFilter = Microsoft.Pex.Framework.Settings.PexTestEmissionFilter.All)]
  5. 现在在 PUT 或产品方法上再次执行“运行 IntelliTest”,您应该会看到其他 PC(以“重复路径”作为摘要消息)。根据您的喜好尝试 EmissionFilter 设置。
于 2016-12-29T07:17:17.773 回答