C# Stryker Mutation Framework - PullRequest
       30

C# Stryker Mutation Framework

0 голосов
/ 30 марта 2020

Я новичок в тестировании и написании юнит-тестов. Я натолкнулся на эту структуру мутации под названием Страйкер. Мне понравилось, так как я пишу с ним лучшие тестовые случаи, которые помогают мне охватить все варианты использования.

Во время некоторых тестовых случаев я сталкиваюсь с мутацией равенства или строковой мутацией. Я не понимаю, что это такое?

Пример

if (file.Length < 10) // Equality Mutation Here
{
throw new ArgumentException("The file name was too short", "file"); // String Mutation Here with the filename is too short
//throw new System.IO.FileNotFoundException();
}

Что это такое и почему оно мне это дает? Есть ли какое-то значение?

Я знаю, что мой вопрос может быть начального уровня.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Я рад, что мутационное тестирование помогает вам изучить модульное тестирование, и это одна из причин, по которой я помогал в создании Stryker. Чтобы ответить на ваш вопрос по этому конкретному c кейсу:

if (file.Length < 10) // Equality Mutation Here
{
throw new ArgumentException("The file name was too short", "file"); // String Mutation Here with the filename is too short
//throw new System.IO.FileNotFoundException();
}

Мы мутируем < в <= и >, чтобы посмотреть, не написали ли вы тест для краевых случаев файла.Length = = 9 file.Length == 10

Мы изменяем строки, чтобы увидеть, проверяете ли вы значение строки в ваших тестах. Например, вы можете проверить правильность сообщения в вашем исключении.

Если у вас есть еще вопросы о Stryker, пожалуйста, ознакомьтесь с документацией или посмотрите этот отличный пост в блоге: https://medium.com/swlh/mutation-tests-in-net-via-stryker-9fd9e8e4bcde

Если вы считаете, что документации недостаточно, отправьте вопрос, который мы можем улучшить!

0 голосов
/ 31 марта 2020

Вы видели документы? https://github.com/stryker-mutator/stryker-handbook/blob/master/mutator-types.md

более конкретно:

  1. https://github.com/stryker-mutator/stryker-handbook/blob/master/mutator-types.md#equality -оператор

Равенство Изменения мутаций между текущим оператором сравнения с одним из множества доступных (>, <,> =, <=, ==,! =) </p>

https://github.com/stryker-mutator/stryker-handbook/blob/master/mutator-types.md#string -литеральный

Мутатор строк в основном меняет строку. Если вы генерируете исключение с сообщением "Exception because X", оно может изменить сообщение на что-то другое "Exception because Y" или "A completely different message"

IMHO String Mutator обычно бесполезен. Я никогда не утверждаю на сообщениях String (я полагаюсь на типы исключений), но Equaly Mutator - один из самых классических c, простых и полезных мутаторов, которые существуют

...