Пекс: Как получить все условия пути (ПК)?

Возможно ли заставить Pex/Intellitest искать какие-либо возможные условия пути? Мне нужно pex показывает мне эти ПК. В pexfonfun/visualstudio 2015 я вижу только несколько компьютеров. Например, неработоспособный ПК не показан.

В следующем примере я получаю 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"?

Спасибо!:)

1 ответ

Решение

>> Почему я не получаю "i! = 12 && i == 15"?

IntelliTest пытается создать компактный набор тестов с высоким охватом. Для вашего примера, обратите внимание, что этих трех компьютеров достаточно, чтобы покрыть все блоки в вашем коде. И поэтому 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 также генерировать все ПК (хотя он не будет использовать новые пути кода). Вот как это сделать:

  1. Сделайте "Run IntelliTest" на вашем методе.
  2. Выберите все тесты в окне "Результаты исследования" и нажмите кнопку "Сохранить". Обратите внимание, что создается новый тестовый проект.
  3. Найдите PUT в этом тестовом проекте - это будет метод с PexMethod приписывать.
  4. Создайте условия для IntelliTest, чтобы генерировать больше ПК и создавать тесты, обновляя PexMethod атрибут следующим образом:[PexMethod(TestEmissionFilter = Microsoft.Pex.Framework.Settings.PexTestEmissionFilter.All)]
  5. Теперь снова выполните "Run IntelliTest" либо на PUT, либо на методе продукта, и вы должны увидеть дополнительные ПК (с "дублирующим путем" в качестве сводного сообщения). Поэкспериментируйте с настройками EmissionFilter.
Другие вопросы по тегам