Здесь я расскажу об этом на примере. Исходный вопрос представляет проблему более абстрактно. Не нужно читать.Где добавить утверждение для каждого сгенерированного теста Intellitest
Update: Вопрос в качестве примера
позволяет сказать, что мы реализовали эту функцию багги для нахождения мин ИНТ []:
public int MyMin(int[] data)
{
int min = 1000;
for (int i = 1; i < data.Length; i++)
{
if (data[i] < min)
{
min = data[i];
}
}
return min;
}
Запуск Intellitest на этой функции дает нам:
Примечание: для проверки №4 и №6 функция не вычисляет минимальное значение из-за его ошибочной реализации. Однако эти тесты проходят, что нежелательно.
Intellitest не может магически определить наше намеренное поведение MyMin
и обработать тест с ошибкой на этих входах. Однако было бы очень хорошо, если бы мы могли вручную указать желаемый результат для этих тестов.
Решение @ michał-komorowski возможно, но для каждого тестового случая я должен повторить его ввод в терминах PexAssume
. Есть ли более элегантный/чистый способ указать желаемый выход для тестовых входов?
Оригинал Вопрос
Intelitest генерирует параметризованный тест, который является изменяемыми и общими/глобальными утверждения могут быть добавлены там. Он также генерирует минимальное количество входов, которые максимизируют охват кода. Intellitest хранит входы в виде отдельных модульных тестов, каждый из которых вызывает параметризованный тест с созданным вводом.
Я ищу способ добавить утверждение для каждого входа.
Поскольку каждый вход хранится как функция проверки единицы в файле .g.cs, это утверждение может быть добавлено. Проблема в том, что эти функции не должны настраиваться пользователем, так как они будут перезаписаны Intellitest в последующих запусках.
Каков рекомендуемый способ добавления утверждений для каждого модульного теста?
Hi Michal. Хотя это может быть полезно для добавления утверждений для общих условий (например, длина массива в вашем примере), но это громоздко и повторяемо, чтобы указать каждый тестовый ввод «PexAssume». Пожалуйста, ознакомьтесь с обновленным вопросом, на котором я приведу пример. – Isaac